home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / ast_comp / concurre.tar / concurrency / crewthes.tex (.txt) < prev    next >
LaTeX Document  |  1993-07-05  |  219KB  |  3,694 lines

  1. % -*- Latex -*-
  2. \documentstyle[12pt]{report}
  3. % Here is a copy of the Stanford thesis style.
  4. % suthesis.sty
  5. % $Header: /u1/pallas/tex/suthesis.sty,v 1.2 89/02/22 09:37:58 pallas Exp $
  6. % Last edit by Joseph Pallas
  7. \typeout{Document Style Option `suthesis' <$Date: 89/02/22 09:37:58 $>.}
  8. \catcode`\@=11
  9. \@ifundefined{chapter}{\@latexerr{The `suthesis' option should be used
  10. with the `report' document style}{You should probably read the
  11. suthesis documentation.}}{}
  12. \oddsidemargin 0.5in \evensidemargin 0in
  13. \marginparwidth 40pt \marginparsep 10pt
  14. \topmargin 0pt \headsep .5in
  15. \textheight 8.1in \textwidth 6in
  16. \brokenpenalty=10000
  17. \renewcommand{\baselinestretch}{1.3}
  18. \def\@xfloat#1[#2]{\ifhmode \@bsphack\@floatpenalty -\@Mii\else
  19.    \@floatpenalty-\@Miii\fi\def\@captype{#1}\ifinner
  20.       \@parmoderr\@floatpenalty\z@
  21.     \else\@next\@currbox\@freelist{\@tempcnta\csname ftype@#1\endcsname
  22.        \multiply\@tempcnta\@xxxii\advance\@tempcnta\sixt@@n
  23.        \@tfor \@tempa :=#2\do
  24.                         {\if\@tempa h\advance\@tempcnta \@ne\fi
  25.                          \if\@tempa t\advance\@tempcnta \tw@\fi
  26.                          \if\@tempa b\advance\@tempcnta 4\relax\fi
  27.                          \if\@tempa p\advance\@tempcnta 8\relax\fi
  28.          }\global\count\@currbox\@tempcnta}\@fltovf\fi
  29.     \global\setbox\@currbox\vbox\bgroup 
  30.     \def\baselinestretch{1}\@normalsize
  31.     \boxmaxdepth\z@
  32.     \hsize\columnwidth \@parboxrestore}
  33. \long\def\@footnotetext#1{\insert\footins{\def\baselinestretch{1}\footnotesize
  34.     \interlinepenalty\interfootnotelinepenalty 
  35.     \splittopskip\footnotesep
  36.     \splitmaxdepth \dp\strutbox \floatingpenalty \@MM
  37.     \hsize\columnwidth \@parboxrestore
  38.    \edef\@currentlabel{\csname p@footnote\endcsname\@thefnmark}\@makefntext
  39.     {\rule{\z@}{\footnotesep}\ignorespaces
  40.       #1\strut}}}
  41. \def\dept#1{\gdef\@dept{#1}}
  42. \def\principaladviser#1{\gdef\@principaladviser{#1}}
  43. \def\advis@r{Adviser}
  44. \def\principaladvisor#1{\gdef\@principaladviser{#1}\gdef\advis@r{Advisor}}
  45. \def\firstreader#1{\gdef\@firstreader{#1}}
  46. \def\secondreader#1{\gdef\@secondreader{#1}}
  47. \def\submitdate#1{\gdef\@submitdate{#1}}
  48. \def\copyrightyear#1{\gdef\@copyrightyear{#1}} % \author, \title in report
  49. \def\@title{}\def\@author{}\def\@dept{computer science}
  50. \def\@principaladviser{}\def\@firstreader{}\def\@secondreader{}
  51. \def\@submitdate{\ifcase\the\month\or
  52.   January\or February\or March\or April\or May\or June\or
  53.   July\or August\or September\or October\or November\or December\fi
  54.   \space \number\the\year}
  55. \ifnum\month=12
  56.     \@tempcnta=\year \advance\@tempcnta by 1
  57.     \edef\@copyrightyear{\number\the\@tempcnta}
  58. \else
  59.     \def\@copyrightyear{\number\the\year}
  60. \newif\ifcopyright \newif\iffigurespage \newif\iftablespage
  61. \copyrighttrue \figurespagetrue \tablespagetrue
  62. \def\titlep{%
  63.     \thispagestyle{empty}%
  64.     \null\vskip1in%
  65.     \begin{center}
  66.         \Large\uppercase\expandafter{\@title}
  67.     \end{center}
  68.     \vfill
  69.     \begin{center}
  70.         \sc a dissertation\\
  71.         submitted to the department of 
  72.             \lowercase\expandafter{\@dept}\\
  73.         and the committee on graduate studies\\
  74.         of stanford university\\
  75.         in partial fulfillment of the requirements\\
  76.         for the degree of\\
  77.         doctor of philosophy
  78.     \end{center}
  79.     \vfill
  80.     \begin{center}
  81.         \rm By\\
  82.         \@author\\
  83.         \@submitdate\\
  84.     \end{center}\vskip.5in\newpage}
  85. \def\copyrightpage{%
  86.     \null\vfill
  87.     \begin{center}
  88.         \large
  89.         \copyright\ Copyright \@copyrightyear\ by \@author\\
  90.         All Rights Reserved
  91.     \end{center}
  92.     \vfill\newpage}
  93. \long\def\signature#1{%
  94. \begin{center}
  95. \begin{minipage}{4in}
  96. \parindent=0pt
  97. I certify that I have read this dissertation and that in my opinion
  98. it is fully adequate, in scope and in quality, as a dissertation for the degree
  99. of Doctor of Philosophy.
  100. \vspace{.5in}
  101. \hbox to 4in{\hfil\shortstack{\vrule width 3in height 0.4pt\\#1}}
  102. \end{minipage}
  103. \end{center}}
  104. \def\signaturepage{%
  105.     \signature{\@principaladviser\\(Principal \advis@r)}
  106.     \vfill
  107.     \signature\@firstreader
  108.     \vfill
  109.     \signature\@secondreader
  110.     \vfill
  111.     \begin{center}
  112.     \begin{minipage}{4in}
  113.     Approved for the University Committee on Graduate Studies:\par
  114.     \vspace{.5in}
  115.     \hbox to 4in{\hfil\vrule width 3in height 0.4pt}
  116.     \end{minipage}
  117.     \end{center}}
  118. \def\beforepreface{
  119.     \pagenumbering{roman}
  120.     \pagestyle{plain}
  121.     \titlep
  122.     \ifcopyright\copyrightpage\fi
  123.     \signaturepage}
  124. \def\prefacesection#1{%
  125.     \chapter*{#1}
  126.     \addcontentsline{toc}{chapter}{#1}}
  127. \def\afterpreface{\newpage
  128.     \tableofcontents
  129.     \newpage
  130.     \iftablespage
  131.         \listoftables
  132.         \newpage
  133.     \iffigurespage
  134.         \listoffigures
  135.         \newpage
  136.     \pagenumbering{arabic}
  137.     \pagestyle{headings}}
  138. \let\@ldthebibliography\thebibliography
  139. \renewcommand{\thebibliography}[1]{\newpage
  140.     \addcontentsline{toc}{chapter}{Bibliography}
  141.     \@ldthebibliography{#1}}
  142. \pagestyle{headings}
  143. \catcode`\@=12
  144. \def\PROC#1{{\mbox{${\cal P}[{#1}]$}}}
  145. \def\PROCD#1{{\mbox{${\cal P}_d[{#1}]$}}}
  146. \def\PROCK#1{{\mbox{${\cal P}_k[{#1}]$}}}
  147. \def\PROCB#1{{\mbox{${\cal P}_{k\bot}[{#1}]$}}}
  148. \def\PROCBC#1{{\mbox{$\overline{{\cal P}_{k\bot}}[{#1}]$}}}
  149. \def\CPROC#1{{\mbox{${\cal P}^{\bullet}[{#1}]$}}}
  150. \def\CPROCBC#1{{\mbox{$\overline{{\cal P}_{k\bot}^{\bullet}}[{#1}]$}}}
  151. \def\nato{\buildrel{\cdot}\over{\to}}
  152. \def\cod{\hbox{\rm cod}}
  153. \def\id{\hbox{\rm id}}
  154. \def\colim{\hbox{\rm colim}}
  155. \def\strip{\let\sS}
  156. \font\eighttt=cmtt8
  157. \scriptfont\ttfam=\eighttt
  158. \def\:#1{\hbox{\tt\ifcat\noexpand#1\relax \expandafter\strip\string#1\else\noexpand#1\fi}}
  159. \def\dsum{\mathbin{+\mkern-5mu+}}
  160. \def\dconc{\mathbin{\|\mkern-1mu|}}
  161. \def\conc{\mathbin{\|}}
  162. \def\cat{\mathbin{;}}
  163. \def\leomega{{{\le}\omega}}
  164. \newtheorem{definition}[theorem]{Definition}
  165. \makeatletter
  166. \def\@citex[#1]#2{\if@filesw\immediate\write\@auxout{\string\citation{#2}}\fi
  167.   \def\@citea{}\@cite{\@for\@citeb:=#2\do
  168.     {\@citea\def\@citea{,\penalty\@m\ }\@ifundefined
  169.        {b@\@citeb}{{\bf ?}\@warning
  170.        {Citation `\@citeb' on page \thepage \space undefined}}%
  171. \hbox{\csname b@\@citeb\endcsname}}}{#1}}
  172. \makeatother
  173. \long\def\comment#1{}
  174. \def\cAl#1#2{{\cal #2}}
  175. \def\maybemath{\ifmmode\def\mm{\relax}\else\def\mm{$}\fi}
  176. \def\%#1{{\maybemath
  177.           \mm \ifcat\noexpand#1\relax \expandafter\cAl\string#1\else\cal\noexpand#1\fi\mm}}
  178. \def\strip{\let\sS}
  179. \def\_#1{{\bf     \ifcat\noexpand#1\relax \expandafter\strip\string#1\else\noexpand#1\fi}}
  180. \def\:#1{\hbox{\tt\ifcat\noexpand#1\relax \expandafter\strip\string#1\else\noexpand#1\fi}}
  181. \newcount\greekno
  182. \def\^#1{{\maybemath
  183. \greekno=`#1\advance\greekno by -65\relax
  184. \ifcase\greekno
  185. A\or        B\or        \Psi\or     \Delta\or    E\or
  186. \Phi\or        \Gamma\or    H\or        I\or    J\or
  187. K\or        \Lambda\or  M\or        N\or    \Theta\or
  188. \Pi\or        Q\or    R\or        \Sigma\or    \Gamma\or
  189. \Upsilon\or V\or    \Omega\or   \Xi
  190. \else\advance\greekno by -32\relax
  191. \ifcase\greekno
  192. \alpha\or    \beta\or      \psi\or    \delta\or    \epsilon\or
  193. \phi\or         \gamma\or      \eta\or    \iota\or    \vartheta\or
  194. \kappa\or    \lambda\or      \mu\or     \nu\or    \theta\or
  195. \pi\or         \varphi\or      \rho\or    \sigma\or    \tau\or
  196. \upsilon\or  \varsigma\or \omega\or  \xi\or    \varrho\or
  197. \zeta\else\errmessage{Bad \char`\% item}\fi
  198. \mm}}
  199. \def\implies{\Longrightarrow}
  200. \def\iff{\Longleftrightarrow}
  201. \def\R{{\mbox{${\bf\bar R}_+$}}}
  202. \def\N{{\mbox{\bf N}}}
  203. \def\Set{{\bf Set}}
  204. \def\Seti{{\bf Seti}}
  205. \def\Pos{{\bf Pos}}
  206. \def\Pros{{\bf Pros}}
  207. \def\Pom{{\bf Pom}}
  208. \def\Pomi{{\bf Pomi}}
  209. \def\Int{{\bf Int}}
  210. \def\SR{{\mathord{\bf SR}}}
  211. \def\hCat{{\mbox -}\_\Cat}
  212. \def\hPhys{{\mbox -}\_\Phys}
  213. \def\Z2{{\mbox{\bf Z$_2$}}}
  214. \def\DYN{{\mbox{\bf DYN}}}
  215. \def\TMP{{\mbox{\bf TMP}}}
  216. \def\comma{\mathop{\downarrow}}
  217. \def\vertex{\mathop{\rm vert}}
  218. \def\<#1>{\langle #1 \rangle}
  219. \def\op{^{\rm op}}
  220. \def\ob{{\rm ob}}
  221. \def\Tau{T}
  222. \def\qed{\vrule height6pt width4pt depth0pt} % end-of-proof etc.
  223. \newtheorem{theorem}{Theorem}
  224. \newtheorem{corollary}[theorem]{Corollary}
  225. \newtheorem{lemma}[theorem]{Lemma}
  226. \newtheorem{proposition}[theorem]{Proposition}
  227. \newenvironment{proof}{\medskip\noindent{\it Proof\/}:\quad}{\quad\qed\medskip}
  228. \newenvironment{proofl}[1]{\medskip\noindent{\it #1\/}:\quad}{\quad\qed\medskip}
  229. \newenvironment{proofo}{\medskip\noindent{\it Outline of Proof\/}:\quad}{\quad\qed\medskip}
  230. \message{<Paul Taylor's commutative diagrams, 20 July 1990>}
  231. %%======================================================================%
  232. %%    TeX  macros for drawing rectangular category-theory diagrams    %
  233. %%                                    %
  234. %%            Paul   Taylor                    %
  235. %%                                    %
  236. %%    Department of Computing, Imperial College, London SW7 2BZ    %
  237. %%    +44 71 589 5111 x 5057              pt@doc.ic.ac.uk    %
  238. %%                                    %
  239. %%        For user documentation, see "diagram-doc.tex"        %
  240. %%                                    %
  241. %% Contents:                                %
  242. %%  (1)    arrow commands  (\rTo etc)                    %
  243. %%  (2)    bits of arrows  (\rhvee etc)                    %
  244. %% After the first two sections (40%) the rest is intended to be    %
  245. %% meaningless in the undocumented version.                %
  246. %%                                    %
  247. %% COPYRIGHT NOTICE:                            %
  248. %%    This package may be copied and used freely for any academic     %
  249. %%    (not commercial or military) purpose, on condition that it      %
  250. %%    is not altered in any way, and that an acknowledgement is       %
  251. %%    included in any published paper using it. It is supplied    %
  252. %%    ``as is'' without warranty, express or implied.            %
  253. %%                                    %
  254. %% CORRUPTION WARNING:                            %
  255. %%    BITNET (IBM) machines may corrupt certain important characters    %
  256. %%    in transmission by electronic mail:                %
  257. %%    {}=curly braces (grouping), \=backslash (keywords),        %
  258. %%    $=dollar (maths), %=percent (comment), &=and (alignment)    %
  259. %%    ^=caret (superscript), _=underline (subscript), ~=tidle        %
  260. %%    #=hash (argument), []=square brackets, |=vertical        %
  261. %%                                    %
  262. %% HISTORY                                %
  263. %% -- all following version numbers are post-facto --            %
  264. %%  3    (Jan 90) stretching vertical arrows                %
  265. %%  2    (Sept 89) stretching horizontal arrows; ``superscript'' labels    %
  266. %%  1    (1987) horiz arrows stretch to edge of cell            %
  267. %%  0    (1986) implementation of Knuth's TeXercise 18.46        %
  268. %%======================================================================%
  269. %% user-settable parameters:
  270. \newdimen\DiagramCellHeight\DiagramCellHeight3em %%
  271. \newdimen\DiagramCellWidth\DiagramCellWidth3em %%
  272. \newdimen\MapBreadth\MapBreadth.04em %%
  273. \newdimen\MapShortFall\MapShortFall.4em %%
  274. \newdimen\PileSpacing\PileSpacing1em %%
  275. \def\labelstyle{\ifincommdiag\textstyle\else\scriptstyle\fi}%%
  276. \let\objectstyle\displaystyle
  277. %%======================================================================%
  278. %%                                    %
  279. %%    (1) ARROW COMMANDS                        %
  280. %%                                    %
  281. %%======================================================================%
  282. \def\rTo{\HorizontalMap\empty-\empty-\rhvee}%%
  283. \def\lTo{\HorizontalMap\lhvee-\empty-\empty}%%
  284. \def\dTo{\VerticalMap\empty|\empty|\dhvee}%%
  285. \def\uTo{\VerticalMap\uhvee|\empty|\empty}%%
  286. \let\uFrom\uTo\let\lFrom\lTo
  287. \def\rArr{\HorizontalMap\empty-\empty-\rhla}%%
  288. \def\lArr{\HorizontalMap\lhla-\empty-\empty}%%
  289. \def\dArr{\VerticalMap\empty|\empty|\dhla}%%
  290. \def\uArr{\VerticalMap\uhla|\empty|\empty}
  291. \def\rDotsto{\HorizontalMap\empty\hfdot\hfdot\hfdot\rhvee}%%
  292. \def\lDotsto{\HorizontalMap\lhvee\hfdot\hfdot\hfdot\empty}%%
  293. \def\dDotsto{\VerticalMap\empty\vfdot\vfdot\vfdot\dhvee}%%
  294. \def\uDotsto{\VerticalMap\uhvee\vfdot\vfdot\vfdot\empty}%%
  295. \let\uDotsfrom\uDotsto\let\lDotsfrom\lDotsto
  296. \def\rDashto{\HorizontalMap\empty\hfdash\hfdash\hfdash\rhvee}%%
  297. \def\lDashto{\HorizontalMap\lhvee\hfdash\hfdash\hfdash\empty}%%
  298. \def\dDashto{\VerticalMap\empty\vfdash\vfdash\vfdash\dhvee}%%
  299. \def\uDashto{\VerticalMap\uhvee\vfdash\vfdash\vfdash\empty}%%
  300. \let\uDashfrom\uDashto\let\lDashfrom\lDashto
  301. \def\rImplies{\HorizontalMap==\empty=\Rightarrow}%%
  302. \def\lImplies{\HorizontalMap\Leftarrow=\empty==}%%
  303. \def\dImplies{\VerticalMap\|\|\empty\|\Downarrow}%%
  304. \def\uImplies{\VerticalMap\Uparrow\|\empty\|\|}%%
  305. \let\uImpliedby\uImplies\let\lImpliedby\lImplies
  306. \def\rMapsto{\HorizontalMap\rtbar-\empty-\rhvee}%%
  307. \def\lMapsto{\HorizontalMap\lhvee-\empty-\ltbar}%%
  308. \def\dMapsto{\VerticalMap\dtbar|\empty|\dhvee}%%
  309. \def\uMapsto{\VerticalMap\uhvee|\empty|\utbar}%%
  310. \let\uMapsfrom\uMapsto\let\lMapsfrom\lMapsto
  311. \def\rIntoA{\HorizontalMap\rthooka-\empty-\rhvee}%%
  312. \def\rIntoB{\HorizontalMap\rthookb-\empty-\rhvee}%%
  313. \def\lIntoA{\HorizontalMap\lhvee-\empty-\lthooka}%%
  314. \def\lIntoB{\HorizontalMap\lhvee-\empty-\lthookb}%%
  315. \def\dIntoA{\VerticalMap\dthooka|\empty|\dhvee}%%
  316. \def\dIntoB{\VerticalMap\dthookb|\empty|\dhvee}%%
  317. \def\uIntoA{\VerticalMap\uhvee|\empty|\uthooka}%%
  318. \def\uIntoB{\VerticalMap\uhvee|\empty|\uthookb}%%
  319. \let\uInfromA\uIntoA\let\uInfromB\uIntoB\let\lInfromA\lIntoA\let\lInfromB
  320. \lIntoB\let\rInto\rIntoA\let\lInto\lIntoA\let\dInto\dIntoB\let\uInto\uIntoA
  321. \def\rEmbed{\HorizontalMap\gt-\empty-\rhvee}%%
  322. \def\lEmbed{\HorizontalMap\lhvee-\empty-\lt}%%
  323. \def\dEmbed{\VerticalMap\vee|\empty|\dhvee}%%
  324. \def\uEmbed{\VerticalMap\uhvee|\empty|\wedge}
  325. \def\rProject{\HorizontalMap\empty-\empty-\triangleright}%%
  326. \def\lProject{\HorizontalMap\triangleleft-\empty-\empty}%%
  327. \def\uProject{\VerticalMap\triangleup|\empty|\empty}%%
  328. \def\dProject{\VerticalMap\empty|\empty|\littletriangledown}
  329. \def\rOnto{\HorizontalMap\empty-\empty-\twoheadrightarrow}%%
  330. \def\lOnto{\HorizontalMap\twoheadleftarrow-\empty-\empty}%%
  331. \def\dOnto{\VerticalMap\empty|\empty|\twoheaddownarrow}%%
  332. \def\uOnto{\VerticalMap\twoheaduparrow|\empty|\empty}%%
  333. \let\lOnfrom\lOnto\let\uOnfrom\uOnto
  334. \def\hEq{\HorizontalMap==\empty==}%%
  335. \def\vEq{\VerticalMap\|\|\empty\|\|}%%
  336. \let\rEq\hEq\let\lEq\hEq\let\uEq\vEq\let\dEq\vEq
  337. \def\hLine{\HorizontalMap\empty-\empty-\empty}%%
  338. \def\vLine{\VerticalMap\empty|\empty|\empty}%%
  339. \let\rLine\hLine\let\lLine\hLine\let\uLine\vLine\let\dLine\vLine
  340. \def\hDots{\HorizontalMap\empty\hfdot\hfdot\hfdot\empty}%%
  341. \def\vDots{\VerticalMap\empty\vfdot\vfdot\vfdot\empty}%%
  342. \let\rDots\hDots\let\lDots\hDots\let\uDots\vDots\let\dDots\vDots
  343. \def\hDashes{\HorizontalMap\empty\hfdash\hfdash\hfdash\empty}%%
  344. \def\vDashes{\VerticalMap\empty\vfdash\vfdash\vfdash\empty}%%
  345. \let\rDashes\hDashes\let\lDashes\hDashes\let\uDashes\vDashes\let\dDashes
  346. \vDashes
  347. \def\rPto{\HorizontalMap\empty-\empty-\rightharpoonup}%%
  348. \def\lPto{\HorizontalMap\leftharpoonup-\empty-\empty}%%
  349. \def\uPto{\VerticalMap\upharpoonright|\empty|\empty}%%
  350. \def\dPto{\VerticalMap\empty|\empty|\downharpoonright}%%
  351. \let\lPfrom\lPto\let\uPfrom\uPto
  352. \def\NW{\NorthWest\DiagonalMap{\lah111}{\laf100}{}{\laf100}{}(2,2)}%%
  353. \def\NE{\NorthEast\DiagonalMap{\lah22}{\laf0}{}{\laf0}{}(2,2)}%%
  354. \def\SW{\SouthWest\DiagonalMap{}{\laf0}{}{\laf0}{\lah11}(2,2)}%%
  355. \def\SE{\SouthEast\DiagonalMap{}{\laf100}{}{\laf100}{\lah122}(2,2)}
  356. \def\nNW{\NorthWest\DiagonalMap{\lah135}{\laf112}{}{\laf112}{}(2,3)}%%
  357. \def\nNE{\NorthEast\DiagonalMap{\lah36}{\laf12}{}{\laf12}{}(2,3)}%%
  358. \def\sSW{\SouthWest\DiagonalMap{}{\laf12}{}{\laf12}{\lah35}(2,3)}%%
  359. \def\sSE{\SouthEast\DiagonalMap{}{\laf112}{}{\laf112}{\lah136}(2,3)}
  360. \def\wNW{\NorthWest\DiagonalMap{\lah153}{\laf121}{}{\laf121}{}(3,2)}%%
  361. \def\eNE{\NorthEast\DiagonalMap{\lah63}{\laf21}{}{\laf21}{}(3,2)}%%
  362. \def\wSW{\SouthWest\DiagonalMap{}{\laf21}{}{\laf21}{\lah53}(3,2)}%%
  363. \def\eSE{\SouthEast\DiagonalMap{}{\laf121}{}{\laf121}{\lah163}(3,2)}
  364. \def\NNW{\NorthWest\DiagonalMap{\lah113}{\laf101}{}{\laf101}{}(2,4)}%%
  365. \def\NNE{\NorthEast\DiagonalMap{\lah25}{\laf01}{}{\laf01}{}(2,4)}%%
  366. \def\SSW{\SouthWest\DiagonalMap{}{\laf01}{}{\laf01}{\lah13}(2,4)}%%
  367. \def\SSE{\SouthEast\DiagonalMap{}{\laf101}{}{\laf101}{\lah125}(2,4)}
  368. \def\WNW{\NorthWest\DiagonalMap{\lah131}{\laf110}{}{\laf110}{}(4,2)}%%
  369. \def\ENE{\NorthEast\DiagonalMap{\lah52}{\laf10}{}{\laf10}{}(4,2)}%%
  370. \def\WSW{\SouthWest\DiagonalMap{}{\laf10}{}{\laf10}{\lah31}(4,2)}%%
  371. \def\ESE{\SouthEast\DiagonalMap{}{\laf110}{}{\laf110}{\lah152}(4,2)}
  372. \def\NNNW{\NorthWest\DiagonalMap{\lah115}{\laf102}{}{\laf102}{}(2,6)}%%
  373. \def\NNNE{\NorthEast\DiagonalMap{\lah16}{\laf02}{}{\laf02}{}(2,6)}%%
  374. \def\SSSW{\SouthWest\DiagonalMap{}{\laf02}{}{\laf02}{\lah15}(2,6)}%%
  375. \def\SSSE{\SouthEast\DiagonalMap{}{\laf102}{}{\laf102}{\lah116}(2,6)}
  376. \def\WWNW{\NorthWest\DiagonalMap{\lah151}{\laf120}{}{\laf120}{}(6,2)}%%
  377. \def\EENE{\NorthEast\DiagonalMap{\lah61}{\laf20}{}{\laf20}{}(6,2)}%%
  378. \def\WWSW{\SouthWest\DiagonalMap{}{\laf20}{}{\laf20}{\lah51}(6,2)}%%
  379. \def\EESE{\SouthEast\DiagonalMap{}{\laf120}{}{\laf120}{\lah161}(6,2)}
  380. %%======================================================================%
  381. %%                                    %
  382. %%    (2) BITS OF ARROWS                        %
  383. %%                                    %
  384. %%======================================================================%
  385. \font\tenln=line10
  386. \mathchardef\lt="313C \mathchardef\gt="313E
  387. \def\rhvee{\mkern-10mu\gt}%%
  388. \def\lhvee{\lt\mkern-10mu}%%
  389. \def\dhvee{\vbox\tozpt{\vss\hbox{$\vee$}\kern0pt}}%%
  390. \def\uhvee{\vbox\tozpt{\hbox{$\wedge$}\vss}}%%
  391. \def\rhcvee{\mkern-10mu\succ}%%
  392. \def\lhcvee{\prec\mkern-10mu}%%
  393. \def\dhcvee{\vbox\tozpt{\vss\hbox{$\curlyvee$}\kern0pt}}%%
  394. \def\uhcvee{\vbox\tozpt{\hbox{$\curlywedge$}\vss}}%%
  395. \def\rhvvee{\mkern-10mu\gg}%%
  396. \def\lhvvee{\ll\mkern-10mu}%%
  397. \def\dhvvee{\vbox\tozpt{\vss\hbox{$\vee$}\kern-.6ex\hbox{$\vee$}\kern0pt}}%%
  398. \def\uhvvee{\vbox\tozpt{\hbox{$\wedge$}\kern-.6ex\hbox{$\wedge$}\vss}}%%
  399. \def\twoheaddownarrow{\rlap{$\downarrow$}\raise-.5ex\hbox{$\downarrow$}}%%
  400. \def\twoheaduparrow{\rlap{$\uparrow$}\raise.5ex\hbox{$\uparrow$}}%%
  401. \def\triangleup{{\scriptscriptstyle\bigtriangleup}}%%
  402. \def\littletriangledown{{\scriptscriptstyle\triangledown}}%%
  403. \def\rhla{\vbox\tozpt{\vss\hbox\tozpt{\hss\tenln\char'55}\kern\axisheight}}%%
  404. \def\lhla{\vbox\tozpt{\vss\hbox\tozpt{\tenln\char'33\hss}\kern\axisheight}}%%
  405. \def\dhla{\vbox\tozpt{\vss\hbox\tozpt{\tenln\char'77\hss}}}%%
  406. \def\uhla{\vbox\tozpt{\hbox\tozpt{\tenln\char'66\hss}\vss}}%%
  407. \def\htdot{\mkern3.15mu\cdot\mkern3.15mu}%%
  408. \def\vtdot{\vbox to 1.46ex{\vss\hbox{$\cdot$}}}%%
  409. \def\utbar{\vrule height 0.093ex depth0pt width 0.4em} \let\dtbar\utbar%%
  410. \def\rtbar{\mkern1.5mu\vrule height 1.1ex depth.06ex width .04em\mkern1.5mu}%
  411. \let\ltbar\rtbar%%
  412. \def\rthooka{\raise.603ex\hbox{$\scriptscriptstyle\subset$}}%%
  413. \def\lthooka{\raise.603ex\hbox{$\scriptscriptstyle\supset$}}%%
  414. \def\rthookb{\raise-.022ex\hbox{$\scriptscriptstyle\subset$}}%%
  415. \def\lthookb{\raise-.022ex\hbox{$\scriptscriptstyle\supset$}}%%
  416. \def\dthookb{\hbox{$\scriptscriptstyle\cap$}\mkern5.5mu}%%
  417. \def\uthookb{\hbox{$\scriptscriptstyle\cup$}\mkern4.5mu}%%
  418. \def\dthooka{\mkern6mu\hbox{$\scriptscriptstyle\cap$}}%%
  419. \def\uthooka{\mkern6mu\hbox{$\scriptscriptstyle\cup$}}%%
  420. \def\hfdot{\mkern3.15mu\cdot\mkern3.15mu}%%
  421. \def\vfdot{\vbox to 1.46ex{\vss\hbox{$\cdot$}}}%%
  422. \def\vfdashstrut{\vrule width0pt height1.3ex depth0.7ex}%%
  423. \def\vfthedash{\vrule width\MapBreadth height0.6ex depth 0pt}%%
  424. \def\hfthedash{\vrule\horizhtdp width 0.26em}%%
  425. \def\hfdash{\mkern5.5mu\hfthedash\mkern5.5mu}%%
  426. \def\vfdash{\vfdashstrut\vfthedash}%%
  427. \def\nwhTO{\nwarrow\mkern-1mu}%%
  428. \def\nehTO{\mkern-.1mu\nearrow}%%
  429. \def\sehTO{\searrow\mkern-.02mu}%%
  430. \def\swhTO{\mkern-.8mu\swarrow}%%
  431. \def\SEpbk{\rlap{\smash{\kern0.1em \vrule depth 2.67ex height -2.55ex width 0%
  432. .9em \vrule height -0.46ex depth 2.67ex width .05em }}}%%
  433. \def\SWpbk{\llap{\smash{\vrule height -0.46ex depth 2.67ex width .05em \vrule
  434. depth 2.67ex height -2.55ex width .9em \kern0.1em }}}%%
  435. \def\NEpbk{\rlap{\smash{\kern0.1em \vrule depth -3.48ex height 3.67ex width 0%
  436. .95em \vrule height 3.67ex depth -1.39ex width .05em }}}%%
  437. \def\NWpbk{\llap{\smash{\vrule height 3.6ex depth -1.39ex width .05em \vrule
  438. depth -3.48ex height 3.67ex width .95em \kern0.1em }}}
  439. %%======================================================================%
  440. \newcount\cdna\newcount\cdnb\newcount\cdnc\newcount\cdnd\cdna=\catcode`\@%
  441. \catcode`\@=11 \let\then\relax\def\loopa#1\repeat{\def\bodya{#1}\iteratea}%
  442. \def\iteratea{\bodya\let\next\iteratea\else\let\next\relax\fi\next}\def\loopb
  443. #1\repeat{\def\bodyb{#1}\iterateb}\def\iterateb{\bodyb\let\next\iterateb\else
  444. \let\next\relax\fi\next} \def\mapctxterr{\message{commutative diagram: map
  445. context error}}\def\mapclasherr{\message{commutative diagram: clashing maps}}%
  446. \def\ObsDim#1{\expandafter\message{! diagrams Warning: Dimension \string#1 is
  447. obsolete (ignored)}\global\let#1\ObsDimq\ObsDimq}\def\ObsDimq{\dimen@=}\def
  448. \HorizontalMapLength{\ObsDim\HorizontalMapLength}\def\VerticalMapHeight{%
  449. \ObsDim\VerticalMapHeight}\def\VerticalMapDepth{\ObsDim\VerticalMapDepth}\def
  450. \VerticalMapExtraHeight{\ObsDim\VerticalMapExtraHeight}\def
  451. \VerticalMapExtraDepth{\ObsDim\VerticalMapExtraDepth}\def\ObsCount#1{%
  452. \expandafter\message{! diagrams Warning: Count \string#1 is obsolete (ignored%
  453. )}\global\let#1\ObsCountq\ObsCountq}\def\ObsCountq{\count@=}\def
  454. \DiagonalLineSegments{\ObsCount\DiagonalLineSegments}\def\tozpt{to\z@}\def
  455. \sethorizhtdp{\dimen8=\axisheight\dimen9=\MapBreadth\advance\dimen8.5\dimen9%
  456. \advance\dimen9-\dimen8}\def\horizhtdp{height\dimen8 depth\dimen9 }\def
  457. \axisheight{\fontdimen22\the\textfont2 }\countdef\boxc@unt=14
  458. \def\bombparameters{\hsize\z@\rightskip\z@ plus1fil minus\maxdimen
  459. \parfillskip\z@\linepenalty9000 \looseness0 \hfuzz\maxdimen\hbadness10000
  460. \clubpenalty0 \widowpenalty0 \displaywidowpenalty0 \interlinepenalty0
  461. \predisplaypenalty0 \postdisplaypenalty0 \interdisplaylinepenalty0
  462. \interfootnotelinepenalty0 \floatingpenalty0 \brokenpenalty0 \everypar{}%
  463. \leftskip\z@\parskip\z@\parindent\z@\pretolerance10000 \tolerance10000
  464. \hyphenpenalty10000 \exhyphenpenalty10000 \binoppenalty10000 \relpenalty10000
  465. \adjdemerits0 \doublehyphendemerits0 \finalhyphendemerits0 \prevdepth\z@}\def
  466. \startbombverticallist{\hbox{}\penalty1\nointerlineskip}
  467. \def\pushh#1\to#2{\setbox#2=\hbox{\box#1\unhbox#2}}\def\pusht#1\to#2{\setbox#%
  468. 2=\hbox{\unhbox#2\box#1}}
  469. \newif\ifallowhorizmap\allowhorizmaptrue\newif\ifallowvertmap
  470. \allowvertmapfalse\newif\ifincommdiag\incommdiagfalse
  471. \def\diagram{\hbox\bgroup$\vcenter\bgroup\startbombverticallist
  472. \incommdiagtrue\baselineskip\DiagramCellHeight\lineskip\z@\lineskiplimit\z@
  473. \mathsurround\z@\tabskip\z@\let\\\diagcr\allowhorizmaptrue\allowvertmaptrue
  474. \halign\bgroup\lcdtempl##\rcdtempl&&\lcdtempl##\rcdtempl\cr}\def\enddiagram{%
  475. \crcr\egroup\reformatmatrix\egroup$\egroup}\def\commdiag#1{{\diagram#1%
  476. \enddiagram}}
  477. \def\lcdtempl{\futurelet\thefirsttoken\dolcdtempl}\newif\ifemptycell\def
  478. \dolcdtempl{\ifx\thefirsttoken\rcdtempl\then\hskip1sp plus 1fil \emptycelltrue
  479. \else\hfil$\emptycellfalse\objectstyle\fi}\def\rcdtempl{\ifemptycell\else$%
  480. \hfil\fi}\def\diagcr{\cr} \def\across#1{\span\omit\mscount=#1 \loop\ifnum
  481. \mscount>2 \spAn\repeat\ignorespaces}\def\spAn{\relax\span\omit\advance
  482. \mscount by -1}
  483. \def\CellSize{\afterassignment\cdhttowd\DiagramCellHeight}\def\cdhttowd{%
  484. \DiagramCellWidth\DiagramCellHeight}\def\MapsAbut{\MapShortFall\z@}
  485. \newcount\cdvdl\newcount\cdvdr\newcount\cdvd\newcount\cdbfb\newcount\cdbfr
  486. \newcount\cdbfl\newcount\cdvdr\newcount\cdvdl\newcount\cdvd
  487. \def\reformatmatrix{\bombparameters\cdvdl=\insc@unt\cdvdr=\cdvdl\cdbfb=%
  488. \boxc@unt\advance\cdbfb1 \cdbfr=\cdbfb\setbox1=\vbox{}\dimen2=\z@\loop\setbox
  489. 0=\lastbox\ifhbox0 \dimen1=\lastskip\unskip\dimen5=\ht0 \advance\dimen5 \dimen
  490. 1 \dimen4=\dp0 \penalty1 \reformatrow\unpenalty\ht4=\dimen5 \dp4=\dimen4 \ht3%
  491. \z@\dp3\z@\setbox1=\vbox{\box4 \nointerlineskip\box3 \nointerlineskip\unvbox1%
  492. }\dimen2=\dimen1 \repeat\unvbox1}
  493. \newif\ifcontinuerow
  494. \def\reformatrow{\cdbfl=\cdbfr\noindent\unhbox0 \loopa\unskip\setbox\cdbfl=%
  495. \lastbox\ifhbox\cdbfl\advance\cdbfl1\repeat\par\unskip\dimen6=2%
  496. \DiagramCellWidth\dimen7=-\DiagramCellWidth\setbox3=\hbox{}\setbox4=\hbox{}%
  497. \setbox7=\box\voidb@x\cdvd=\cdvdl\continuerowtrue\loopa\advance\cdvd-1
  498. \adjustcells\ifcontinuerow\advance\dimen6\wd\cdbfl\cdda=.5\dimen6 \ifdim\cdda
  499. <\DiagramCellWidth\then\dimen6\DiagramCellWidth\advance\dimen6-\cdda
  500. \nopendvert\cdda\DiagramCellWidth\fi\advance\dimen7\cdda\dimen6=\wd\cdbfl
  501. \reformatcell\advance\cdbfl-1 \repeat\advance\dimen7.5\dimen6 \outHarrow} \def
  502. \adjustcells{\ifnum\cdbfr>\cdbfl\then\ifnum\cdvdr>\cdvd\then\continuerowfalse
  503. \else\setbox\cdbfl=\hbox to\wd\cdvd{\lcdtempl\VonH{}\rcdtempl}\fi\else\ifnum
  504. \cdvdr>\cdvd\then\advance\cdvdr-1 \setbox\cdvd=\vbox{}\wd\cdvd=\wd\cdbfl\dp
  505. \cdvd=\dp1 \fi\fi}
  506. \def\reformatcell{\sethorizhtdp\noindent\unhbox\cdbfl\skip0=\lastskip\unskip
  507. \par\ifcase\prevgraf\reformatempty\or\reformatobject\else\reformatcomplex\fi
  508. \unskip}\def\reformatobject{\setbox6=\lastbox\unskip\vadjdon6\outVarrow
  509. \setbox6=\hbox{\unhbox6}\advance\dimen7-.5\wd6 \outHarrow\dimen7=-.5\wd6
  510. \pusht6\to4}\newcount\globnum
  511. \def\reformatcomplex{\setbox6=\lastbox\unskip\setbox9=\lastbox\unskip\setbox9%
  512. =\hbox{\unhbox9 \skip0=\lastskip\unskip\global\globnum\lastpenalty\hskip\skip
  513. 0 }\advance\globnum9999 \ifcase\globnum\reformathoriz\or\reformatpile\or
  514. \reformatHonV\or\reformatVonH\or\reformatvert\or\reformatHmeetV\fi}
  515. \def\reformatempty{\vpassdon\ifdim\skip0>\z@\then\hpassdon\else\ifvoid2 \then
  516. \else\advance\dimen7-.5\dimen0 \cdda=\wd2\advance\cdda.5\dimen0\wd2=\cdda\fi
  517. \fi}\def\VonH{\doVonH6}\def\HonV{\doVonH7}\def\HmeetV{\MapBreadth-2%
  518. \MapShortFall\doVonH4}\def\doVonH#1{\cdna-999#1\futurelet\thenexttoken
  519. \dooVonH}\def\dooVonH{\let\next\relax\sethorizhtdp\ifallowhorizmap
  520. \ifallowvertmap\then\ifx\thenexttoken[\then\let\next\VonHstrut\else
  521. \sethorizhtdp\dimen0\MapBreadth\let\next\VonHnostrut\fi\else\mapctxterr\fi
  522. \else\mapctxterr\fi\next}\def\VonHstrut[#1]{\setbox0=\hbox{$#1$}\dimen0\wd0%
  523. \dimen8\ht0\dimen9\dp0 \VonHnostrut}\def\VonHnostrut{\setbox0=\hbox{}\ht0=%
  524. \dimen8\dp0=\dimen9\wd0=.5\dimen0 \copy0\penalty\cdna\box0 \allowhorizmapfalse
  525. \allowvertmapfalse}\def\reformatHonV{\hpassdon\doreformatHonV}\def
  526. \reformatHmeetV{\dimen@=\wd9 \advance\dimen7-\wd9 \outHarrow\setbox6=\hbox{%
  527. \unhbox6}\dimen7-\wd6 \advance\dimen@\wd6 \setbox6=\hbox to\dimen@{\hss}%
  528. \pusht6\to4\doreformatHonV}\def\doreformatHonV{\setbox9=\hbox{\unhbox9 \unskip
  529. \unpenalty\global\setbox\globbox=\lastbox}\vadjdon\globbox\outVarrow}\def
  530. \reformatVonH{\vpassdon\advance\dimen7-\wd9 \outHarrow\setbox6=\hbox{\unhbox6%
  531. }\dimen7=-\wd6 \setbox6=\hbox{\kern\wd9 \kern\wd6}\pusht6\to4}\def\hpassdon{}%
  532. \def\vpassdon{\dimen@=\dp\cdvd\advance\dimen@\dimen4 \advance\dimen@\dimen5
  533. \dp\cdvd=\dimen@\nopendvert}\def\vadjdon#1{\dimen8=\ht#1 \dimen9=\dp#1 }
  534. \def\HorizontalMap#1#2#3#4#5{\sethorizhtdp\setbox1=\makeharrowpart{#1}\def
  535. \arrowfillera{#2}\def\arrowfillerb{#4}\setbox5=\makeharrowpart{#5}\ifx
  536. \arrowfillera\justhorizline\then\def\arra{\hrule\horizhtdp}\def\kea{\kern-0.%
  537. 01em}\let\arrstruthtdp\horizhtdp\else\def\kea{\kern-0.15em}\setbox2=\hbox{%
  538. \kea${\arrowfillera}$\kea}\def\arra{\copy2}\def\arrstruthtdp{height\ht2 depth%
  539. \dp2 }\fi\ifx\arrowfillerb\justhorizline\then\def\arrb{\hrule\horizhtdp}\def
  540. \keb{kern-0.01em}\ifx\arrowfillera\empty\then\let\arrstruthtdp\horizhtdp\fi
  541. \else\def\keb{\kern-0.15em}\setbox4=\hbox{\keb${\arrowfillerb}$\keb}\def\arrb
  542. {\copy4}\ifx\arrowfilera\empty\then\def\arrstruthtdp{height\ht4 depth\dp4 }%
  543. \fi\fi\setbox3=\makeharrowpart{{#3}\vrule width\z@\arrstruthtdp}%
  544. \ifallowhorizmap\then\let\execmap\execHorizontalMap\else\let\execmap
  545. \mapctxterr\fi\allowhorizmapfalse\gettwoargs}\def\makeharrowpart#1{\hbox{%
  546. \mathsurround\z@\edef\next{#1}\ifx\next\empty\else$\mkern-1.5mu{\next}\mkern-%
  547. 1.5mu$\fi}}\def\justhorizline{-}
  548. \def\execHorizontalMap{\dimen0=\wd6 \ifdim\dimen0<\wd7\then\dimen0=\wd7\fi
  549. \dimen3=\wd3 \ifdim\dimen0<2em\then\dimen0=2em\fi\skip2=.5\dimen0
  550. \ifincommdiag plus 1fill\fi minus\z@\advance\skip2-.5\dimen3 \skip4=\skip2
  551. \advance\skip2-\wd1 \advance\skip4-\wd5 \kern\MapShortFall\box1 \xleaders
  552. \arra\hskip\skip2 \vbox{\lineskiplimit\maxdimen\lineskip.5ex \ifhbox6 \hbox to%
  553. \dimen3 {\hss\box6\hss}\fi\vtop{\box3 \ifhbox7 \hbox to\dimen3 {\hss\box7\hss
  554. }\fi}}\ifincommdiag\kern-.5\dimen3\penalty-9999\null\kern.5\dimen3\fi
  555. \xleaders\arrb\hskip\skip4 \box5 \kern\MapShortFall}
  556. \def\reformathoriz{\vadjdon6\outVarrow\ifvoid7\else\mapclasherr\fi\setbox2=%
  557. \box9 \wd2=\dimen7 \dimen7=\z@\setbox7=\box6 }
  558. \def\resetharrowpart#1#2{\ifvoid#1\then\ifdim#2=\z@\else\setbox4=\hbox{%
  559. \unhbox4\kern#2}\fi\else\ifhbox#1\then\setbox#1=\hbox to#2{\unhbox#1}\else
  560. \widenpile#1\fi\pusht#1\to4\fi}\def\outHarrow{\resetharrowpart2{\wd2}\pusht2%
  561. \to4\resetharrowpart7{\dimen7}\pusht7\to4\dimen7=\z@}
  562. \def\pile#1{{\incommdiagtrue\let\pile\innerpile\allowvertmapfalse
  563. \allowhorizmaptrue\baselineskip.5\PileSpacing\lineskip\z@\lineskiplimit\z@
  564. \mathsurround\z@\tabskip\z@\let\\\pilecr\vcenter{\halign{\hfil$##$\hfil\cr#1
  565. \crcr}}}\ifincommdiag\then\ifallowhorizmap\then\penalty-9998
  566. \allowvertmapfalse\allowhorizmapfalse\else\mapctxterr\fi\fi}\def\pilecr{\cr}%
  567. \def\innerpile#1{\noalign{\halign{\hfil$##$\hfil\cr#1 \crcr}}}
  568. \def\reformatpile{\vadjdon9\outVarrow\ifvoid7\else\mapclasherr\fi\penalty1
  569. \setbox9=\hbox{\unhbox9 \unskip\unpenalty\setbox9=\lastbox\unhbox9 \global
  570. \setbox\globbox=\lastbox}\unvbox\globbox\setbox9=\vbox{}\setbox7=\vbox{}%
  571. \loopb\setbox6=\lastbox\ifhbox6 \skip3=\lastskip\unskip\splitpilerow\repeat
  572. \unpenalty\setbox9=\hbox{$\vcenter{\unvbox9}$}\setbox2=\box9 \dimen7=\z@}\def
  573. \pilestrut{\vrule height\dimen0 depth\dimen3 width\z@}\def\splitpilerow{%
  574. \dimen0=\ht6 \dimen3=\dp6 \noindent\unhbox6\unskip\setbox6=\lastbox\unskip
  575. \unhbox6\par\setbox6=\lastbox\unskip\ifcase\prevgraf\or\setbox6=\hbox\tozpt{%
  576. \hss\unhbox6\hss}\ht6=\dimen0 \dp6=\dimen3 \setbox9=\vbox{\vskip\skip3 \hbox
  577. to\dimen7{\hfil\box6}\nointerlineskip\unvbox9}\setbox7=\vbox{\vskip\skip3
  578. \hbox{\pilestrut\hfil}\nointerlineskip\unvbox7}\or\setbox7=\vbox{\vskip\skip3
  579. \hbox{\pilestrut\unhbox6}\nointerlineskip\unvbox7}\setbox6=\lastbox\unskip
  580. \setbox9=\vbox{\vskip\skip3 \hbox to\dimen7{\pilestrut\unhbox6}%
  581. \nointerlineskip\unvbox9}\fi\unskip}
  582. \def\widenpile#1{\setbox#1=\hbox{$\vcenter{\unvbox#1 \setbox8=\vbox{}\loopb
  583. \setbox9=\lastbox\ifhbox9 \skip3=\lastskip\unskip\setbox8=\vbox{\vskip\skip3
  584. \hbox to\dimen7{\unhbox9}\nointerlineskip\unvbox8}\repeat\unvbox8 }$}}
  585. \def\justverticalline{|}\def\makevarrowpart#1{\hbox to\MapBreadth{\hss$\kern
  586. \MapBreadth{#1}$\hss}}\def\VerticalMap#1#2#3#4#5{\setbox1=\makevarrowpart{#1}%
  587. \def\arrowfillera{#2}\setbox3=\makevarrowpart{#3}\def\arrowfillerb{#4}\setbox
  588. 5=\makevarrowpart{#5}\ifx\arrowfillera\justverticalline\then\def\arra{\vrule
  589. width\MapBreadth}\def\kea{\kern-0.05ex}\else\def\kea{\kern-0.35ex}\setbox2=%
  590. \vbox{\kea\makevarrowpart\arrowfillera\kea}\def\arra{\copy2}\fi\ifx
  591. \arrowfillerb\justverticalline\then\def\arrb{\vrule width\MapBreadth}\def\keb
  592. {\kern-0.05ex}\else\def\keb{\kern-0.35ex}\setbox4=\vbox{\keb\makevarrowpart
  593. \arrowfillerb\keb}\def\arrb{\copy4}\fi\ifallowvertmap\then\let\execmap
  594. \execVerticalMap\else\let\execmap\mapctxterr\fi\allowhorizmapfalse\gettwoargs
  595. \def\execVerticalMap{\setbox3=\makevarrowpart{\box3}\setbox0=\hbox{}\ht0=\ht3
  596. \dp0\z@\ht3\z@\box6 \setbox8=\vtop spread2ex{\offinterlineskip\box3 \xleaders
  597. \arrb\vfill\box5 \kern\MapShortFall}\dp8=\z@\box8 \kern-\MapBreadth\setbox8=%
  598. \vbox spread2ex{\offinterlineskip\kern\MapShortFall\box1 \xleaders\arra\vfill
  599. \box0}\ht8=\z@\box8 \ifincommdiag\then\kern-.5\MapBreadth\penalty-9995 \null
  600. \kern.5\MapBreadth\fi\box7\hfil}
  601. \newcount\colno\newdimen\cdda\newbox\globbox\def\reformatvert{\setbox6=\hbox{%
  602. \unhbox6}\cdda=\wd6 \dimen3=\dp\cdvd\advance\dimen3\dimen4 \setbox\cdvd=\hbox
  603. {}\colno=\prevgraf\advance\colno-2 \loopb\setbox9=\hbox{\unhbox9 \unskip
  604. \unpenalty\dimen7=\lastkern\unkern\global\setbox\globbox=\lastbox\advance
  605. \dimen7\wd\globbox\advance\dimen7\lastkern\unkern\setbox9=\lastbox\vtop to%
  606. \dimen3{\unvbox9}\kern\dimen7 }\ifnum\colno>0 \ifdim\wd9<\PileSpacing\then
  607. \setbox9=\hbox to\PileSpacing{\unhbox9}\fi\dimen0=\wd9 \advance\dimen0-\wd
  608. \globbox\setbox\cdvd=\hbox{\kern\dimen0 \box\globbox\unhbox\cdvd}\pushh9\to6%
  609. \advance\colno-1 \setbox9=\lastbox\unskip\repeat\advance\dimen7-.5\wd6
  610. \advance\dimen7.5\cdda\advance\dimen7-\wd9 \outHarrow\dimen7=-.5\wd6 \advance
  611. \dimen7-.5\cdda\pusht9\to4\pusht6\to4\nopendvert\dimen@=\dimen6\advance
  612. \dimen@-\wd\cdvd\advance\dimen@-\wd\globbox\divide\dimen@2 \setbox\cdvd=\hbox
  613. {\kern\dimen@\box\globbox\unhbox\cdvd\kern\dimen@}\dimen8=\dp\cdvd\advance
  614. \dimen8\dimen5 \dp\cdvd=\dimen8 \ht\cdvd=\z@}
  615. \def\outVarrow{\ifhbox\cdvd\then\deepenbox\cdvd\pusht\cdvd\to3\else
  616. \nopendvert\fi\dimen3=\dimen5 \advance\dimen3-\dimen8 \setbox\cdvd=\vbox{%
  617. \vfil}\dp\cdvd=\dimen3} \def\nopendvert{\setbox3=\hbox{\unhbox3\kern\dimen6}}%
  618. \def\deepenbox\cdvd{\setbox\cdvd=\hbox{\dimen3=\dimen4 \advance\dimen3-\dimen
  619. 9 \setbox6=\hbox{}\ht6=\dimen3 \dp6=-\dimen3 \dimen0=\dp\cdvd\advance\dimen0%
  620. \dimen3 \unhbox\cdvd\dimen3=\lastkern\unkern\setbox8=\hbox{\kern\dimen3}%
  621. \loopb\setbox9=\lastbox\ifvbox9 \setbox9=\vtop to\dimen0{\copy6
  622. \nointerlineskip\unvbox9 }\dimen3=\lastkern\unkern\setbox8=\hbox{\kern\dimen3%
  623. \box9\unhbox8}\repeat\unhbox8 }}
  624. \newif\ifPositiveGradient\PositiveGradienttrue\newif\ifClimbing\Climbingtrue
  625. \newcount\DiagonalChoice\DiagonalChoice1 \newcount\lineno\newcount\rowno
  626. \newcount\charno\def\laf{\afterassignment\xlaf\charno='}\def\xlaf{\hbox{%
  627. \tenln\char\charno}}\def\lah{\afterassignment\xlah\charno='}\def\xlah{\hbox{%
  628. \tenln\char\charno}}\def\makedarrowpart#1{\hbox{\mathsurround\z@${#1}$}}\def
  629. \lad{\afterassignment\xlad\charno='}\def\xlad{\setbox2=\xlaf\setbox0=\hbox to%
  630. .5\wd2{$\hss\ldot\hss$}\ht0=.25\ht2 \dp0=\ht0 \hbox{\mv-\ht0\copy0 \mv\ht0%
  631. \box0}}
  632. \def\DiagonalMap#1#2#3#4#5{\ifPositiveGradient\then\let\mv\raise\else\let\mv
  633. \lower\fi\setbox2=\makedarrowpart{#2}\setbox1=\makedarrowpart{#1}\setbox4=%
  634. \makedarrowpart{#4}\setbox5=\makedarrowpart{#5}\setbox3=\makedarrowpart{#3}%
  635. \let\execmap\execDiagonalLine\gettwoargs}
  636. \def\makeline#1(#2,#3;#4){\hbox{\dimen1=#2\relax\dimen2=#3\relax\dimen5=#4%
  637. \relax\vrule height\dimen5 depth\z@ width\z@\setbox8=\hbox to\dimen1{\tenln#1%
  638. \hss}\cdna=\dimen5 \divide\cdna\dimen2 \ifnum\cdna=0 \then\box8 \else\dimen4=%
  639. \dimen5 \advance\dimen4-\dimen2 \divide\dimen4\cdna\dimen3=\dimen1 \cdnb=%
  640. \dimen2 \divide\cdnb1000 \divide\dimen3\cdnb\cdnb=\dimen4 \divide\cdnb1000
  641. \multiply\dimen3\cdnb\dimen6\dimen1 \advance\dimen6-\dimen3 \cdnb=0
  642. \ifPositiveGradient\then\dimen7\z@\else\dimen7\cdna\dimen4 \multiply\dimen4-1
  643. \fi\loop\raise\dimen7\copy8 \ifnum\cdnb<\cdna\hskip-\dimen6 \advance\cdnb1
  644. \advance\dimen7\dimen4 \repeat\fi}}\newdimen\objectheight\objectheight1.5ex
  645. \def\execDiagonalLine{\setbox0=\hbox\tozpt{\cdna=\xcoord\cdnb=\ycoord\dimen8=%
  646. \wd2 \dimen9=\ht2 \dimen0=\cdnb\DiagramCellHeight\advance\dimen0-2%
  647. \MapShortFall\advance\dimen0-\objectheight\setbox2=\makeline\box2(\dimen8,%
  648. \dimen9;.5\dimen0)\setbox4=\makeline\box4(\dimen8,\dimen9;.5\dimen0)\dimen0=2%
  649. \wd2 \advance\dimen0-\cdna\DiagramCellWidth\advance\dimen0 2\DiagramCellWidth
  650. \dimen2\DiagramCellHeight\advance\dimen2-\MapShortFall\dimen1\dimen2 \advance
  651. \dimen1-\ht1 \advance\dimen2-\ht2 \dimen6=\dimen2 \advance\dimen6.25\dimen8
  652. \dimen3\dimen2 \advance\dimen3-\ht3 \dimen4=\dimen2 \dimen7=\dimen2 \advance
  653. \dimen4-\ht4 \advance\dimen7-\ht7 \advance\dimen7-.25\dimen8
  654. \ifPositiveGradient\then\hss\raise\dimen4\hbox{\rlap{\box5}\box4}\llap{\raise
  655. \dimen6\box6\kern.25\dimen9}\else\kern-.5\dimen0 \rlap{\raise\dimen1\box1}%
  656. \raise\dimen2\box2 \llap{\raise\dimen7\box7\kern.25\dimen9}\fi\raise\dimen3%
  657. \hbox\tozpt{\hss\box3\hss}\ifPositiveGradient\then\rlap{\kern.25\dimen9\raise
  658. \dimen7\box7}\raise\dimen2\box2\llap{\raise\dimen1\box1}\kern-.5\dimen0 \else
  659. \rlap{\kern.25\dimen9\raise\dimen6\box6}\raise\dimen4\hbox{\box4\llap{\box5}}%
  660. \hss\fi}\ht0\z@\dp0\z@\box0}
  661. \def\NorthWest{\PositiveGradientfalse\Climbingtrue\DiagonalChoice0 }\def
  662. \NorthEast{\PositiveGradienttrue\Climbingtrue\DiagonalChoice1 }\def\SouthWest
  663. {\PositiveGradienttrue\Climbingfalse\DiagonalChoice3 }\def\SouthEast{%
  664. \PositiveGradientfalse\Climbingfalse\DiagonalChoice2 }
  665. \newif\ifmoremapargs\def\gettwoargs{\setbox7=\box\voidb@x\setbox6=\box
  666. \voidb@x\moremapargstrue\def\whichlabel{6}\def\xcoord{2}\def\ycoord{2}\def
  667. \contgetarg{\def\whichlabel{7}\ifmoremapargs\then\let\next\getanarg\let
  668. \contgetarg\execmap\else\let\next\execmap\fi\next}\getanarg}\def\getanarg{%
  669. \futurelet\thenexttoken\switcharg}\def\getlabel#1#2#3{\setbox#1=\hbox{$%
  670. \labelstyle\>{#3}\>$}\dimen0=\ht#1\advance\dimen0 .4ex\ht#1=\dimen0 \dimen0=%
  671. \dp#1\advance\dimen0 .4ex\dp#1=\dimen0 \contgetarg}\def\eatspacerepeat{%
  672. \afterassignment\getanarg\let\junk= }\def\catcase#1:{{\ifcat\noexpand
  673. \thenexttoken#1\then\global\let\xcase\docase\fi}\xcase}\def\tokcase#1:{{\ifx
  674. \thenexttoken#1\then\global\let\xcase\docase\fi}\xcase}\def\default:{\docase}%
  675. \def\docase#1\esac#2\esacs{#1}\def\skipcase#1\esac{}\def\getcoordsrepeat(#1,#%
  676. 2){\def\xcoord{#1}\def\ycoord{#2}\getanarg}\let\esacs\relax\def\switcharg{%
  677. \global\let\xcase\skipcase\catcase{&}:\moremapargsfalse\contgetarg\esac
  678. \catcase\bgroup:\getlabel\whichlabel-\esac\catcase^:\getlabel6\esac\catcase_:%
  679. \getlabel7\esac\tokcase{~}:\getlabel3\esac\tokcase(:\getcoordsrepeat\esac
  680. \catcase{ }:\eatspacerepeat\esac\default:\moremapargsfalse\contgetarg\esac
  681. \esacs}
  682. % -- define eqalign and friends
  683. \catcode`\@=11
  684. \newskip\c@nt@ring\c@nt@ring=0pt plus 1000pt minus 1000pt
  685. \def\eqalign#1{\,\vcenter{\openup1\jot \m@th
  686.   \ialign{\strut\hfil$\displaystyle{##}$&$\displaystyle{{}##}$\hfil
  687.     \crcr#1\crcr}}\,}
  688. \def\eqalignno#1{\displ@y \tabskip=\c@nt@ring
  689.   \halign to\displaywidth{\hfil$\displaystyle{##}$\tabskip=0pt
  690.     &$\displaystyle{{}##}$\hfil\tabskip=\c@nt@ring
  691.     &\llap{$##$}\tabskip=0pt\crcr#1\crcr}}
  692. \def\leqalignno#1{\displ@y \tabskip=\c@nt@ring
  693.   \halign to\displaywidth{\hfil$\displaystyle{##}$\tabskip=0pt
  694.     &$\displaystyle{{}##}$\hfil\tabskip=\c@nt@ring
  695.     &\kern-\displaywidth\rlap{$##$}\tabskip=\displaywidth\crcr#1\crcr}}
  696. \catcode`\@=12
  697. \widowpenalty=5000
  698. \begin{document}
  699. \title{Metric Process Models}
  700. \author{Roger Frederick Crew}
  701. \principaladviser{Vaughan Pratt}
  702. \firstreader{John Mitchell}
  703. \secondreader{Jos\'e Meseguer\\(Center for Study of Language and Information)}
  704. \figurespagefalse
  705. \tablespagefalse
  706. \submitdate{November 1991}
  707. \beforepreface
  708. \begin{abstract}
  709. Among the various formal models proposed to provide semantics for concurrency constructs in programming languages, partial orders have the advantages of conceptual simplicity, mathematical tractability, and economy of expression.
  710. We first observe that the theory of enriched categories supplies a natural abstraction of the notion of partial order, the \%D-schedule.
  711. Varying the choice of temporal domain \%D allows for other forms of temporal constraint beyond that available from simple ordering.
  712. For example, having the constraints on inter-event delays be numeric bounds produces a generalized metric-space structure suitable for the discussion of real-time computation.
  713. We then construct an algebra of {\em processes} parametrized by notion of time.
  714. Here a process is a structure based on schedules that also incorporates nondeterminism.
  715. Since the model is category-based, we can define operations on \%D-schedules and processes via universal constructions that depend little on the choice of \%D.
  716. Also, given a suitable choice of process structure and process morphism, the constructions used for process operations and schedule operations are remarkably similar.
  717. \end{abstract}
  718. \prefacesection{Acknowledgements}
  719. I would first of all like to thank my advisor, Vaughan Pratt, whose ideas, inspirations and criticisms have contributed substantially to this work.  Ross Casley and Jos\'e Meseguer, as collaborators, have also had a significant influence.  Committee members John Mitchell and Robert Floyd provided useful comments.
  720. Conversations with various other people, including John Power, Mike Johnson, Phil Scott, Bard Bloom and Albert Meyer have also been quite helpful.
  721. This research was supported in part by a National Science Foundation Graduate Fellowship.
  722. And yes, I used Paul Taylor's commutative diagram macros.  For that matter, I also used Don Knuth's \TeX, Leslie Lamport's \LaTeX, Supoj Sutanthavibul's {\tt fig} package, Richard Stallman's GNU Emacs and numerous other pieces of software without which this work would have taken much longer to produce.  Nor would it be right to ignore the excellent facilities and support provided by Stanford's Computer Science Department and CSD-CF.
  723. Lastly, I am profoundly grateful to my parents (not to mention the rest of my family for that matter) for the encouragement and support they have provided over the years.
  724. \afterpreface
  725. \prefacesection{Outline}
  726. In Chapter \ref{chapter:tstruct}, we present the concept of schedule, a collection of events with temporal constraints, which is rooted in the various extant partial order models of concurrency \cite{Gre,Gra,NPW,MS,Pr82,PW}, particularly that of the labeled partial order or {\em pomset} model of Grabowski \cite{Gra} and Pratt \cite{Pr82}.
  727. Partial orders themselves are a sort of primaeval form of schedule having no further temporal information beyond some order constraints between events.
  728. We consider the similarities of the axioms of partial orders and metric spaces
  729. the goal being to define abstract schedule operations that are applicable to all.
  730. This is done by having an appropriate notion of schedule map or {\em morphism} and then using various universal constructions from category theory.
  731. Much of the material presented in this chapter is actually joint work with Casley, Meseguer and Pratt, and as such is mainly developed elsewhere (see \cite{CCMP,Cas91}).  
  732. It does, however provide necessary groundwork for the process model presented in the following chapter.
  733. Chapter \ref{chapter:proc} is the main focus of the thesis and is concerned with introducing choice or nondeterminism into the model.  
  734. The initial vehicle for this is the disjunctive-normal-form (set of sets) representation of process that is inherent in the original partial order model and indeed in the trace theoretic model from which it derives.
  735. Once the appropriate additional structure is determined and once we have an appropriate definition for {\em process} morphism, many of the categorical definitions for operations go through as for schedules.
  736. As an example, Chapter \ref{chapter:dflow} considers the application of this model to dataflow nets, recasting a result of Gaifman and Pratt \cite{GP} from partial orders to the more general setting of physical \%D-schedules.
  737. \chapter{Temporal Structures}\label{chapter:tstruct}
  738. \def\R{{\mbox{${\bf\bar R}^{op}$}}}
  739. \def\of{\circ}
  740. \section{Events and Constraints}
  741. The most basic notion of {\em schedule} is that of set of events
  742. together with some further collection of constraints
  743. on these events that determine when they are allowed to occur.
  744. At first glance, it may seem sufficient to refer to one's intuitive notion of an event, 
  745. remarking that we leave our events uninterpreted; 
  746. i.~e., the question of whether a particular event 
  747. is a disk-read or a light bulb turning on is of no concern to us.
  748. However, it should be clarified that in our scheme, events are atomic or {\em instantaneous} entities.
  749. This becomes important when we generalize the partial order notion of time, with its vague notions of 
  750. `before' and `after', to a metric notion with actual numerical delays.  
  751. For example, if we have events corresponding to a light bulb turning on and a door closing,
  752. what we actually need are particular moments,
  753. e.~g., the instant in which the filament achieves two-thirds of its eventual brightness and the instant the 
  754. door first contacts the doorjamb, in order to make meaningful a phrase like 
  755. ``the door closes 5 seconds after the light goes on.''
  756. It may seem unduly restrictive to insist that events be atomic when, in reality, 
  757. almost none of the particular actions one wishes to model are actually atomic or instantaneous.
  758. However, in our usage, ``event'' means the referential moment rather than the full action.
  759. In our example, the closing of a door, which undoubtedly takes a few seconds to complete, 
  760. is not an event {\em per se}.  
  761. What usually happens, however is that one is not concerned with the duration of the door-closing action, 
  762. and so one merely choses or takes as implicit an arbitrary moment during the swing of the door and 
  763. identifies that event with the entire process of the door being closed.
  764. This interpretation makes it possible to consider ``refinement of events'' in a realm where events are atomic, 
  765. since now one is not refining an event so much as 
  766. refining the particular tasks or actions of which that event is a part.
  767. The result of a refinement is {\em not} a subdivided event,
  768. but rather the inclusion of several additional referential moments of a given task or action into our schedule.
  769. The events themselves remain instantaneous, we just see more of them.
  770. We next consider the question of the form the constraints should take.
  771. Perhaps the coarsest notion of constraint on a set of events is that of
  772. an ordering, namely that of a set of events, E, with a partial order
  773. relation $\le$ constraining the temporal order in which these events
  774. may occur.  In this case $\le$ satisfies the usual axioms.
  775. \tracingmacros=1
  776. $$\eqalignno{&x\le x&(R)\cr
  777. x\le y \land y\le z\implies &x\le z&(T)\cr
  778. x\le y \land y\le x\implies &x = y&(A)\cr
  779. Recall the typical interpretation for $x\le y$, 
  780. namely that of being an abbreviation for ($x<y$ or $x=y$), 
  781. that is, ``Either $x$ occurs strictly before $y$ or $x$ and $y$ are the {\em same event}.''
  782. Curiously enough, this is not merely a statement about the relative timings of $x$ and $y$, 
  783. but the latter half makes an additional assertion about the identities of the events themselves.
  784. In particular, the antisymmetry axiom makes it impossible to constrain two distinct events to be simultaneous, since to do so in a partial order setting means imposing on a pair of events $(x,y)$ both of the constraints $x\le y$ and $y\le x$, which leads inescapably to their not being distinct.
  785. Aside from this question of why one should not be allowed to constrain distinct events to be simultaneous,
  786. it will be seen that the omission of the antisymmetry axiom allows for a simpler framework.
  787. Thus, for the most basic notion of schedule,
  788. we prefer instead to use {\em preorders} (sometimes known as {\em quasi-orders}) 
  789. which only satisfy $(R)$ and $(T)$.
  790. As an alternative notion of temporal constraint,
  791. consider the standard axioms for a metric space $(E,d:E\times E\to\_R^{+})$.
  792. $$\eqalignno{d(x,x)&=0&(R)\cr
  793. d(x,y) + d(y,z) &\ge d(x,z)&(T)\cr
  794. d(x,y)=0 &\implies x = y&(A)\cr
  795. d(x,y)&=d(y,x)&(S)\cr
  796. Here, it suffices to note the similarity of form between
  797. these axioms and those for partial orders.
  798. The metric space is our paradigm for a more detailed notion of schedule,
  799. one specifying actual numerical delays between events rather
  800. than simply indicating the temporal precedences.
  801. As with partial orders, there are objections that may be raised to various axioms,
  802. e.~g., the axiom $(A)$ inspires the same objection as the correspondingly labeled axiom for partial orders, 
  803. namely that it forbids distinct simultaneous events.
  804. As with partial orders, we shall see that discarding the offending axioms, in this case $(A)$ and $(S)$, leads to a useful structure in its own right.
  805. However, in this case what we are left with is actually quite different from the usual notion of metric space.
  806. \section{The Temporal Domain}
  807. We now consider the particular common features of preorders and metric spaces 
  808. that should be kept when abstracting to a general notion of schedule.
  809. There is a set of events E,
  810. and a constraint map $\^d:E\times E\to\%D$ giving the temporal
  811. constraint the schedule assigns to each pair of events.
  812. Here \%D is an abstract domain of temporal constraints,
  813. with the following attributes:
  814. \begin{itemize}
  815. \item
  816. some constraints imply others,
  817. so we at least have a partial ordering $\sqsubseteq$ on the constraints of \%D
  818. \item
  819. a particular constraint (call it the {\em zero} or {\em instantaneous} delay)
  820. $I$ that bounds the delay between an event and itself.
  821. \item
  822. a sequential composition of constraints $\otimes$, i.~e., given
  823. constraints $d$, $e$ on two consecutive delays, we should be able to
  824. infer a constraint $d\otimes e$ on the combined delay.
  825. \end{itemize}
  826. Naturally, $\otimes$ should be monotone,
  827. i.~e., if either $d$ or $e$ are strengthened,
  828. $d\otimes e$ should be a correspondingly stronger constraint.
  829. Also, for any 3 consecutive constraints,
  830. it should not matter which two are composed first.
  831. Finally, if we compose a constraint with the instantaneous constraint $I$,
  832. we should not obtain any new information.
  833. \begin{definition}
  834. An {\em ordered (commutative) monoid} $(\%D,\sqsubseteq,\otimes,I)$ is a set \%D with a partial order $\sqsubseteq$, a binary operation $\otimes:\%D\times\%D\to\%D$, and a distinguished element $I\in\%D$ such that $(\%D,\otimes,I)$ is a (commutative) monoid, i.~e., for all $d,e,f$ in \%D
  835. \begin{eqnarray}
  836. d \otimes (e \otimes f) &=& (d \otimes e) \otimes f\\
  837. d \otimes I ~=&d&=~ I\otimes d\\
  838. (d\otimes e &=& e\otimes d)
  839. \end{eqnarray}
  840. \noindent and such that $\otimes$ is monotonic with respect to $\sqsubseteq$, i.~e.,
  841. \begin{eqnarray}
  842. d\mathbin{\sqsubseteq}e \mathrel{\land} f \mathbin{\sqsubseteq} g &\implies& (d \otimes f) \mathbin{\sqsubseteq} (e \otimes g)\label{om:monot}
  843. \end{eqnarray}
  844. \end{definition}
  845. \noindent
  846. There are also logical operations.
  847. \begin{itemize}
  848. \item
  849. A given set of constraints $\{d_i\}_i$ applying to some inter-event delay
  850. can be equivalently stated as a join (conjunction) $\bigvee_i d_i$,
  851. \item
  852. There is a null (weakest) constraint, $0$.
  853. \end{itemize}
  854. To formalize the above, we recall the following definition
  855. \begin{definition}
  856. For any partial order $(\%D,\sqsubseteq)$ and any subset $S$ of \%D, a {\em join} of $S$ (denoted $\bigvee S$ or $\bigvee_{s\in S}s$) 
  857. is any element $\bar s\in\%D$ for which
  858. \begin{itemize}
  859. \item
  860. $s\sqsubseteq\bar s$ for all $s\in S$, and
  861. \item
  862. if $t\in\%D$ is such that $s\sqsubseteq t$ for all $s\in S$, then $\bar s\sqsubseteq t$.
  863. \end{itemize}
  864. \end{definition}
  865. Antisymmetry of $\sqsubseteq$ guarantees that joins are unique.
  866. \begin{definition}
  867. A {\em (join) semilattice} $(\%D,\sqsubseteq,0)$ is 
  868. a partial order $(\%D,\sqsubseteq)$ together with a least element $0$ 
  869. having the property that every finite subset of \%D has a join, 
  870. $0$ being the join of the empty set.
  871. A semilattice is {\em complete} if {\em every} subset has a join.
  872. \end{definition}
  873. As it happens, a semilattice can just as easily have specified using only the join rather than the ordering $\sqsubseteq$:
  874. \addtocounter{theorem}{-1}
  875. \begin{definition}{\bf [alternate]}
  876. A {\em complete semilattice} $(\%D,\bigvee,0)$ is a set \%D, together with a distinguished element $0$ and a function $\bigvee:\%P(\%D)\to\%D$ (here $\%P(\%D)$ is the powerset of \%D) such that
  877. \begin{enumerate}
  878. \item
  879. $\bigvee\{\}=0$
  880. \item
  881. $\bigvee\{d\}=d$
  882. \item\label{sl:comp}
  883. For any collection S of subsets of \%D,
  884. $\bigvee\bigcup_{s\in S}s=\bigvee\{\bigvee s|s\in S\}$
  885. \end{enumerate}
  886. \end{definition}
  887. These two definitions of complete semilattice are equivalent\cite{Joh82}; given a semilattice of the second form, the ordering $\sqsubseteq$ can be derived from the join operation
  888. $$d\sqsubseteq e\iff\bigvee\{d,e\}=e$$
  889. The corresponding alternate definition for ordinary semilattices uses $\%F(\%D)$, the set of {\em finite} subsets of \%D, and only requires (\ref{sl:comp}) to hold for finite collections of finite subsets of \%D.
  890. In any case, we see that the desired structure for our temporal domain is something that is a combination of a complete join semilattice and an ordered monoid.
  891. \begin{definition}
  892. A {\em (commutative) closed semiring} is any tuple $(\%D,\bigvee,\otimes,0,I)$ such that $(\%D,\bigvee,0)$ is a complete semilattice, $(\%D,\otimes,I)$ is a (commutative) monoid and such that the following distributive properties hold
  893. \begin{eqnarray}
  894. \bigvee_i(d_i \otimes e) &=&(\bigvee_i d_i) \otimes e\\
  895. \bigvee_i(d \otimes e_i) &=& d \otimes \bigvee_i e_i\label{csr:dist}
  896. \end{eqnarray}
  897. \end{definition}
  898. Note that this distributivity implies the monotonicity (\ref{om:monot}) stipulation for ordered monoids.
  899. We have now arrived at the desired notion of temporal domain:
  900. \begin{definition}
  901. A {\em temporal domain} \%D is a commutative closed semiring 
  902. $(\%D,\bigvee,0,\otimes,I)$.
  903. \end{definition}
  904. Though there is no reason to suppose {\it a priori} that the sequential composition $\otimes$ need be a commutative operation, restricting ourselves to this case simplifies the discussion.
  905. \subsection{Monoidal Categories}
  906. Closed semirings are a special case of monoidal categories that are closed and cocomplete.  Recall that a (small) category \%D consists of
  907. \begin{itemize}
  908. \item
  909. a set of {\em objects}, $\ob(\%D)$
  910. \item
  911. for every pair of objects, $d,e\in\ob(\%D)$, a set ({\em homset}) of {\em morphisms} $\:\Hom(d,e)$\goodbreak
  912. (a typical morphism therein being denoted $m:d\to e$),
  913. \item
  914. for every object $d\in\ob(\%D)$ a distinguished {\em identity} morphism $1_d:d\to d$, and
  915. \item
  916. for every triple of objects $c,d,e\in\ob(\%D)$,
  917. a {\em composition} operation $\circ:\:\Hom(d,e)\times\:\Hom(c,d)\to\:\Hom(c,e)$ 
  918. \end{itemize}
  919. with the usual associativity of $\circ$ and identity laws:
  920. \begin{eqnarray*}
  921. (l\circ m)\circ n&=&l\circ (m\circ n)\\
  922. m\circ 1_c&=&1_d\circ m = m
  923. \end{eqnarray*}
  924. for all morphisms $l:d\to e$, $m:c\to d$, and $n:b\to c$.
  925. We then note that a preorder is equivalent to a small category in which we constrain all of the homsets to contain at most one morphism.  Essentially, each instance of a $\sqsubseteq$ relationship between two constraints $d,e$ becomes a morphism $d\to e$; if $d\sqsubseteq e$ does not hold, then we take $\:\Hom(d,e)$ to be empty.  Each identity morphism is an instance of the reflexivity axiom, while the composition operation provides transitivity.  
  926. In the general categorical setting, we now have the possibility of having more than one morphism between constraints.  
  927. The morphisms in some sense are {\em named implications}: whereas before we were satisfied with the knowledge $c\sqsubseteq d$, i.~e., that $d$ is a stronger constraint than $c$, we now have a morphism $m:c\to d$ designating {\em how} we know that $c$ is a stronger constraint than $d$.  
  928. The identity and associativity laws provide proof rules
  929. $$\matrix{\offinterlineskip\strut\cr
  930. \noalign{\hrule}
  931. \strut 1_d:d\to d\cr}\qquad\qquad
  932. \matrix{\offinterlineskip\strut
  933. m:c\to d\qquad n:b\to c\cr
  934. \noalign{\hrule}
  935. \strut n\circ m:b\to d\cr
  936. whereby we can derive additional constraint implications.
  937. Taking the join of a set of constraints corresponds in the categorical setting to taking a {\em colimit} of a diagram of constraints;
  938. insisting that all joins be present is a matter of asserting {\em cocompleteness} for the corresponding category.
  939. For a closed semiring, which has the additional operation $\otimes$, 
  940. the analogous notion is that of a {\em monoidal biclosed} category or a {\em symmetric monoidal closed} category in the case of a commutative closed semiring.
  941. Here, we give only a brief, informal overview (see Mac~Lane \cite{Mac} for the full definition).
  942. A {\em monoidal} category \%D is an ordinary category together with 
  943. \begin{enumerate}
  944. \item
  945. a functor $\otimes:\%D\times\%D\to\%D$ 
  946. \item
  947. a distinguished object $I\in\ob(\%D)$
  948. \item
  949. 3 natural isomorphisms
  950. \begin{eqnarray*}
  951. \^a_{bcd}&:&(b\otimes c)\otimes d\to b\otimes(c\otimes d)\cr
  952. \^l_c&:&I\otimes c\to c\cr
  953. \^r_c&:&c\otimes I\to c\cr
  954. \end{eqnarray*}
  955. such that for all $b,c,d,e\in\ob(\%D)$ the following diagrams commute:
  956. \begin{center}
  957. \setlength{\unitlength}{0.0125in}
  958. \begin{picture}(368,112)(40,700)
  959. \put(145,713){\vector( 1, 0){170}}
  960. \put(363,727){\vector( 0, 1){ 44}}
  961. \put( 83,771){\vector( 0,-1){ 44}}
  962. \put(284,783){\vector( 1, 0){ 32}}
  963. \put(144,783){\vector( 1, 0){ 32}}
  964. \put(225,720){\makebox(0,0)[lb]{\raisebox{0pt}[0pt][0pt]{$\alpha $}}}
  965. \put(368,746){\makebox(0,0)[lb]{\raisebox{0pt}[0pt][0pt]{$1\otimes\alpha $}}}
  966. \put( 50,746){\makebox(0,0)[lb]{\raisebox{0pt}[0pt][0pt]{$\alpha \otimes1$}}}
  967. \put(295,790){\makebox(0,0)[lb]{\raisebox{0pt}[0pt][0pt]{$\alpha $}}}
  968. \put(156,790){\makebox(0,0)[lb]{\raisebox{0pt}[0pt][0pt]{$\alpha $}}}
  969. \put(320,710){\makebox(0,0)[lb]{\raisebox{0pt}[0pt][0pt]{$b\otimes\bigl((c\otimes d)\otimes e\bigr)$}}}
  970. \put( 40,710){\makebox(0,0)[lb]{\raisebox{0pt}[0pt][0pt]{$\bigl(b\otimes(c\otimes d)\bigr)\otimes e$}}}
  971. \put(320,780){\makebox(0,0)[lb]{\raisebox{0pt}[0pt][0pt]{$b\otimes\bigl(c\otimes(d\otimes e)\bigr)$}}}
  972. \put(180,780){\makebox(0,0)[lb]{\raisebox{0pt}[0pt][0pt]{$(b\otimes c)\otimes(d\otimes e)$}}}
  973. \put( 40,780){\makebox(0,0)[lb]{\raisebox{0pt}[0pt][0pt]{$\bigl((b\otimes c)\otimes d\bigr)\otimes e$}}}
  974. \end{picture}
  975. \end{center}
  976. \begin{center}\begin{picture}(120,80)
  977. \put(0,55){$(b \otimes I)\otimes c$}\put(60,58){\vector(1,0){30}}
  978. \put(70,61){$\alpha$}\put(95,55){$b\otimes(I\otimes c)$}
  979. \put(15,25){$\rho\otimes 1$}\put(25,50){\vector(1,-1){40}}
  980. \put(95,25){$1\otimes\lambda$}\put(110,50){\vector(-1,-1){40}}
  981. \put(55,0){$b\otimes c$}
  982. \end{picture}\end{center}
  983. \end{enumerate}
  984. These last conditions, known as {\em coherence} conditions, provide the actual ``monoid\-al'' structure.  
  985. It would be far too restrictive to actually require $(b\otimes c)\otimes d=b\otimes (c\otimes d)$, even though this happens to hold in the preorder case; 
  986. normally, the best we can do is stipulate that they be canonically isomorphic.
  987. The coherence conditions are sufficient to guarantee that, for every pair
  988. of functors $\%D^n\to\%D$ built up from $\otimes$ and $I$ that are equivalent in a monoidal sense, 
  989. i.~e., one is obtainable from the other via applications of the associativity and identity rules for monoids,
  990. there is a unique natural isomorphism --- 
  991. that is, every means of arriving at such an isomorphism 
  992. via combinations of $\alpha$, $\lambda$, and $\rho$ yields the same morphism.
  993. For a proof of this and a full discussion of coherence, 
  994. see Chapter 7 of Mac~Lane \cite{Mac}.
  995. A {\em symmetric} monoidal category is one in which we have an additional natural isomorphism
  996. \begin{displaymath}
  997. \^g:c\otimes d\to d\otimes c
  998. \end{displaymath}
  999. and an additional set of coherence conditions.  
  1000. In the case of a preorder category, these are again vacuously satisfied and the whole structure reduces to our previous notion of commutative ordered monoid.
  1001. A symmetric monoidal category is {\em closed} if, for all $c\in\ob(\%D)$, 
  1002. the functor $c\otimes{-}$ (and hence, the functor ${-}\otimes c$ as well) 
  1003. has a right adjoint.
  1004. If a functor possesses a right adjoint it preserves colimits.
  1005. Furthermore in the case of preorder categories, the converse holds as well.
  1006. Recall that in the preorder case, colimits are merely joins;
  1007. thus, the statement that $c\otimes{-}$ preserves joins is merely one of the distributive laws we saw earlier (\ref{csr:dist}).
  1008. It is then straightforward to see that closed semirings are the preorder case of symmetric monoidal categories.
  1009. \section{Schedules}
  1010. Given a temporal domain \%D,
  1011. describing the corresponding notion of schedule is straightforward.
  1012. \begin{definition}
  1013. A \%D-schedule, $\:p=(E,\^d)$ consists of a set $E$ and a function
  1014. $\^d:E\times E\to\%D$ satisfying
  1015. $$\eqalignno
  1016. {I&\sqsubseteq\^d(x,x)&(R)\cr
  1017. \^d(x,y)\otimes\^d(y,z)&\sqsubseteq\^d(x,z)&(T)\cr
  1018. for all $x,y\in E$.
  1019. A {\em physical} \%D-schedule, $\:p$, is a \%D-schedule $\:p=(E,\^d)$
  1020. with the additional property
  1021. $$\^d(x,x)=I \leqno(P)$$
  1022. for all $x\in E$.
  1023. \end{definition}
  1024. The significance of physical \%D-schedules is that while the more general
  1025. domains of \%D-schedules have a desirable completeness property,
  1026. it allows for schedules that are overconstrained in the sense that no
  1027. possible occurrences of actual events could satisfy it.
  1028. The $(P)$ axiom rules out these schedules,
  1029. leaving only those which will be the actual objects of interest.
  1030. At this point we should consider some examples.
  1031. \subsection{Preorders}
  1032. The smallest nontrivial temporal domain \_2 has just two
  1033. constraints, a null constraint $0$ and a tighter constraint $1$ which also
  1034. serves as the instantaneous constraint $I$.
  1035. The join operation, $\lor$, is the the usual disjunction of truth values, while $\otimes$ is just $\land$.
  1036. The map $\^d$ then defines a relation $\le$ on E.  
  1037. The definition of \_2-schedule is equivalent to the axioms for $\le$ being a preorder.
  1038. Since $1$ is the strongest constraint available, the additional
  1039. condition $(P)$ for physical \_2-schedules is vacuous.
  1040. \subsection{Prosset orders}
  1041. We next consider a slightly larger temporal domain
  1042. $\_3=\{0,1,2\}$, where $I=1$, $0\sqsubseteq I\sqsubseteq 2$ 
  1043. and $\otimes$ is given by
  1044. \begin{equation}\label{eq:prosrules}
  1045. \matrix{\offinterlineskip\strut\otimes&\vrule&0&I&2\cr
  1046. \noalign{\hrule}
  1047. \strut 0&\vrule&0&0&0\cr
  1048. \strut I&\vrule&0&I&2\cr
  1049. \strut 2&\vrule&0&2&2\cr
  1050. }\end{equation}
  1051. It so happens that given $I=1$, this is the only possible choice for $\otimes$.
  1052. Here, a map $\^d:E\times E\to\_3$ effectively defines {\em two} relations, 
  1053. which we will denote $\le$ and $\prec$ and define as follows:
  1054. $$\eqalignno
  1055. {x\le y&\iff \^d(x,y)\sqsupseteq I&(D{\le})\cr
  1056. x\prec y&\iff\^d(x,y)=2&(D{\prec})\cr
  1057. The rules (\ref{eq:prosrules}) for $\otimes$ imply that 
  1058. $\le$ is a preorder and that
  1059. \begin{eqnarray}
  1060. x\prec y &\implies &x\le y\\
  1061. x\prec y\le z&\implies &x\prec z\\
  1062. x\le y\prec z&\implies &x\prec z\label{eq:cotrans}
  1063. \end{eqnarray}
  1064. It should also be clear that for any structure $(E,{\le},{\prec})$ satisfying these properties, 
  1065. there is a unique map $\^d:E\times E\to\_3$ such that ($D{\le}$) and ($D{\prec}$) both hold.
  1066. A {\em physical} \_3-schedule is one in which $\prec$ is irreflexive.
  1067. Essentially the axiom $(P)$ rules out all $\prec$ cycles and when
  1068. combined with (\ref{eq:cotrans}) implies $x\le y\implies y\not\prec x$.
  1069. With this addition, the resulting set of axioms for ${\le}$ and ${\prec}$
  1070. is exactly those for {\em prosset orders} as defined in \cite{GP}.
  1071. Thus we obtain the simplest notion of temporal constraint
  1072. (i.~e., smallest temporal domain \%D)
  1073. in which we can represent the notion of strict precedence.
  1074. \subsection{Other Finite Temporal Domains}
  1075. As a particularly trivial case,
  1076. one could also consider the temporal domain \_1,
  1077. having a single (null) constraint.
  1078. A \_1-schedule necessarily assigns the same constraint to all pairs of events.
  1079. The resulting structures are indistinguishable from sets
  1080. since the ``constraints'' provide no additional information.
  1081. In \cite{CCMP}, a class of $n$-element, totally-ordered, idempotent ($a\otimes a=a$) temporal domains is described 
  1082. and it is noted that given $n$, 
  1083. there exist $2^{n-2}$ choices of $\otimes$ and $I$ yielding an idempotent temporal domain.  
  1084. Both of the temporal domains \_2 and \_3 are instances of this class,
  1085. as is another 3-element domain $\{0,1,I\}$ having $\otimes$ given by
  1086. $$\matrix{\offinterlineskip\strut\otimes&\vrule&0&1&I\cr
  1087. \noalign{\hrule}
  1088. \strut 0&\vrule&0&0&0\cr
  1089. \strut 1&\vrule&0&1&1\cr
  1090. \strut I&\vrule&0&1&I\cr
  1091. Actually, we will have nothing further to say about the latter domain here, 
  1092. since we are more interested in schedules over temporal domains 
  1093. for which the physical axiom $(P)$ is not vacuously true 
  1094. as it is in any case where $I$ is the maximal constraint.
  1095. For $n\le3$ this exhausts the possibilities.  
  1096. \subsection{Interval Spaces}
  1097. We now return to the question of a domain of numeric delays.
  1098. Take \%D to be \R, the reals with $\pm\infty$ ordered in reverse;
  1099. $+\infty$ is the null constraint, I=0, and we sequentially compose
  1100. constraints via addition:
  1101. $$\matrix{\strut\otimes&\vrule&\infty&s&-\infty\cr
  1102. \noalign{\hrule}
  1103. \strut\infty&\vrule &\infty &\infty&\infty\cr
  1104. r\strut&\vrule      &\infty    &r+s&-\infty\cr
  1105. \strut-\infty&\vrule&\infty&-\infty&-\infty\cr
  1106. The $r$'s as constraints can be thought of as upper bounds on delays.
  1107. The \R-schedule axioms are then
  1108. $$\eqalignno{0 &\ge \^d(x,x)&(R)\cr
  1109. \^d(x,y)+\^d(y,z) &\ge \^d(x,z)&(T)\cr
  1110. Even if one stipulates the $(P)$ axiom $\^d(x,x)=0$, this is still not a metric space.
  1111. since we are missing both the symmetry axiom and the axiom that zero distance implies identity.
  1112. The latter axiom is the one that in our context would forbid distinct simultaneous events.
  1113. Lack of symmetry means that for every pair of distinct events, $x$, $y$,
  1114. the metric $\^d$ actually specifies two bounds,
  1115. an upper bound $\^d(x,y)$ and a {\em lower} bound $-\^d(y,x)$.
  1116. A more intuitive name for \R-schedule might be {\em interval space}.
  1117. In this case the significance of the $(P)$ axiom is that, together with
  1118. the triangle inequality $(T)$, it serves to imply that all of the
  1119. intervals are of nonnegative width, which is to say that the schedule
  1120. is not overconstrained, but actually in some sense {\em physically realizable},
  1121. hence the motivation for the name {\em physical} \%D-schedules.
  1122. \subsection{\protect{\%D}-Categories}
  1123. When we take the more general version in which \%D is a monoidal category
  1124. the corresponding notion of schedule is that of a small category enriched
  1125. over \%D, otherwise known as a {\em \%D-category}  
  1126. \footnote{It should be noted that in much of the literature on enriched categories, 
  1127. the monoidal category is held fixed and denoted as $V$, 
  1128. resulting in the name ``$V$-categories.''
  1129. This conflicts with the use for $V$ for vertex set which is nearly universal for graph theory.}.
  1130. A \%D-category, \:p, consists of
  1131. \begin{itemize}
  1132. \item a set $V\:p$ of ``objects'',
  1133. \item a function $\^d:(V\:p)^2\to\%D$,
  1134. \item a collection of morphisms in \%D,
  1135. $m_{xyz}:\^d(x,y)\otimes\^d(y,z)\to\^d(x,z)$ for each $x,y,z\in V$
  1136. \item another collection of morphisms in \%D
  1137. $j_{x}:I\to\^d(x,x)$ for each $x\in V$.
  1138. \end{itemize}
  1139. such that the collections $m$ and $j$ satisfy the following commutativity
  1140. conditions
  1141. $$\commdiag
  1142. {(\^d(u,v)\otimes \^d(v,w))\otimes \^d(w,x) &&\rTo{\alpha_{\^d(u,v)\^d(v,w)\^d(w,x)}}{}&& \^d(u,v)\otimes
  1143. (\^d(v,w)\otimes \^d(w,x))\cr 
  1144. \dTo{m_{uvw}\otimes1}{} & & & &\dTo{1\otimes m_{vwx}}{}\cr
  1145. \^d(u,w)\otimes \^d(w,x)  &\rTo{m_{uwx}}{} & \^d(u,x) & \lFrom{m_{uvx}}{} &\^d(u,v)\otimes \^d(v,x)\cr
  1146. }\hss$$
  1147. $$\commdiag
  1148. {I\otimes \^d(u,v)&\rTo{\lambda_{\^d(u,v)}}{}&\^d(u,v)&\lFrom{\rho_{\^d(u,v)}}{}   &\^d(u,v)\otimes I\cr
  1149. \dTo{}{j_u\otimes 1}&               &\vEq{}{}&               &\dTo{1\otimes j_v}{}\cr
  1150. \^d(u,u)\otimes \^d(u,v)&\rTo{m_{uuv}}{}&\^d(u,v)&\lFrom{m_{uvv}}{}&\^d(u,v)\otimes\^d(v,v)\cr
  1151. See Kelly \cite{Kel} for the detailed definitions, though in the
  1152. case where \%D is a preorder, this all reduces to the conditions given
  1153. above; the further requirements are vacuous.
  1154. \section{Schedule Maps}
  1155. A model of concurrent computations should not only provide descriptions
  1156. of individual schedules, but should also provide maps between schedules.
  1157. Maps have a number of uses, of which we will mention two:
  1158. \begin{itemize}
  1159. \item
  1160. A map relates a schedule to a particular observation of that schedule.
  1161. For this to make sense, we need the notion of an observation as a
  1162. maximally constrained schedule.
  1163. In the case of a partially ordered set,
  1164. the corresponding notion of a maximally constrained schedule is
  1165. that of a total order, one in which every pair of distinct events is
  1166. ordered.
  1167. The natural notion of maps between partial orders is that of
  1168. a monotone map, and we note that a particular observation satisfies
  1169. the constraints of a particular schedule precisely when there exists a
  1170. monotone map from the schedule to the observation.
  1171. \item
  1172. Given two schedules describing respectively e.~g., the behavior of some
  1173. component and the behavior of some constituent subcomponent,
  1174. we may note that every event of the subcomponent schedule should appear
  1175. somewhere in the schedule for the entire component.
  1176. Furthermore any temporal constraints that exist between two such
  1177. component events will apply to the delay between the corresponding events
  1178. of the larger schedule for the component, which in general may be more
  1179. constrained.  In short, the map embeds the subcomponent schedule in the schedule for the larger component.
  1180. \end{itemize}
  1181. First we need a general definition of schedule map
  1182. \begin{definition}
  1183. For general \%D-schedules $\:p=(E,\^d)$, $\:p'=(E',\^d')$, a map
  1184. $\:f:\:p\to\:p'$ is any function $f:E\to E'$ for which
  1185. $\^d(x,y)\sqsubseteq\^d'(f(x),f(y))$ for all $x,y\in E$
  1186. \end{definition}
  1187. For the specific examples, we have maps as follows.
  1188. \begin{itemize}
  1189. \item
  1190. In the preorder case, this is just the notion of monotone map.
  1191. \item
  1192. For prosset orders, this is a function that is monotone w.r.t $\le$,
  1193. strictly monotone w.r.t. $\prec$.
  1194. \item
  1195. For interval spaces, this is a contraction function that takes intervals to
  1196. possibly-smaller intervals, that is, given the interval $[-\^d(y,x),\^d(x,y)]$ 
  1197. bounding the delay between $x$ and $y$, the above definition stipulates
  1198. $$\eqalign
  1199. {\^d(x,y)&\ge\^d(f(x),f(y))\cr
  1200. -\^d(y,x)&\le-\^d(f(y),f(x))\cr
  1201. and hence $[-\^d(f(y),f(x)),\^d(f(x),f(y))]\subseteq[-\^d(y,x),\^d(x,y)]$.
  1202. \item
  1203. When \%D is a monoidal category, we have the corresponding notion of
  1204. a \%D-functor between \%D-categories, $\:f:\:p\to\:q$, which consists of
  1205. \begin{itemize}
  1206. \item a set function (``object map'') $V\:f:V\:p\to V\:q$
  1207. \item a \%D-morphism $\:f_{xy}:\^d_{\:p}(x,y)\to\^d_{\:q}(V\:fx,V\:fy)$
  1208. \end{itemize}
  1209. along with various diagrams ensuring the preservation of
  1210. ``compositions'' and ``identities'' (which commute automatically
  1211. when \%D is a preorder).  This is more fully described by Kelly \cite{Kel}.
  1212. \end{itemize}
  1213. \section{Schedule Operations}
  1214. One of the motivating applications of this framework is that of providing an algebra of computations or processes
  1215. while having the various operation definitions be relatively independent of our choice of temporal domain.
  1216. Characterizing them as categorical operations is particularly useful towards this end.
  1217. For schedules, this question has already been covered in \cite{CCMP}, which describes a collection 
  1218. of schedule operations, some of which we review here.
  1219. \subsection{Concurrence}
  1220. {\em Concurrence} is the idea of combining schedules, or more generally processes or computations, in parallel.
  1221. The key element is not that they are required to run at the same time as one might infer from 
  1222. ``concurrent,'' but rather that there are no interactions between the processes, and that, 
  1223. therefore, they {\em could} be running at the same time with no particular impact on either.
  1224. Expressing this for partial order or preorder schedules is particularly straightforward:
  1225. we take the disjoint union of the event sets keeping whatever orderings have already been given,
  1226. leaving the remaining pairs of events unordered.  
  1227. This extends immediately to schedules over an arbitrary temporal domain, 
  1228. in which we take the union of the event sets, use the given constraints and place an initial or vacuous 
  1229. constraint on all of the delays between events from different schedules.
  1230. In this construction, when we take the concurrence $\:p\conc\:q$ of two schedules $\:p$ and $\:q$, 
  1231. the canonical injections $i_1:\:p\to\:p\conc\:q$ and $i_2:\:q\to\:p\conc\:q$
  1232. are schedule maps in the above sense.  
  1233. The concurrence is, in fact, a {\em coproduct} in the category of \%D-schedules.  
  1234. Since coproducts are always unique up to isomorphism, 
  1235. and since they exist in the category of \%D-schedules as proved in \cite{CCMP},
  1236. this can serve as the formal definition 
  1237. of our temporal-domain-independent notion of schedule concurrence.
  1238. We also note the existence of an identity for concurrence, 
  1239. namely the initial schedule \:0, which has no events at all.
  1240. We eschew the more usual notation $\:p+\:q$ 
  1241. for coproduct, so as not to confuse concurrence with the disjunctive choice ($+$) operation introduced in the next chapter.
  1242. \subsection{Concatenation}
  1243. {\em Concatenation} is the idea of sequentially composing computations.  
  1244. In the context of schedules, 
  1245. this means that all of the events of one schedule are constrained to occur 
  1246. before any of the events of the next schedule.
  1247. This is similar to concurrence 
  1248. except that we have to introduce additional constraints to enforce this ordering between the schedules.
  1249. Some temporal-domain independence is sacrificed here, 
  1250. since we have to choose which additional constraint to impose.
  1251. Fixing such a constraint $d\in\%D$, 
  1252. we can then go on to describe the concatenation of two schedules \:p and \:q as
  1253. the schedule $\:p\cat\:q$ having the same events as $\:p\conc\:q$,
  1254. but whose constraints are the minimal set of constraints such that
  1255. $$\eqalign
  1256. {\^d_{\:p}(x,y)&\sqsubset\^d_{\:p\cat\:q}(x,y)\qquad\hbox{for all $x,y\in V(\:p)$}\cr
  1257. \^d_{\:q}(x,y)&\sqsubset\^d_{\:p\cat\:q}(x,y)\qquad\hbox{for all $x,y\in V(\:q)$}\cr
  1258. d&\sqsubset\^d_{\:p\cat\:q}(x,y)\qquad\hbox{for all $x\in V(\:p)$, $y\in V(\:q)$}\cr
  1259. This too can be characterized categorically.
  1260. However, rather than refer specifically to a constraint $d\in\%D$,
  1261. we prefer to refer to a schedule $\:2\in\%D\hPhys$ having two events and a map
  1262. $k:\:I\conc\:I\to\:2$.
  1263. The schedule \:2 may be thought of as a concatenation prototype with the afore-mentioned $d$ appearing as the $\^d(0,1)$ constraint of \:2.
  1264. \begin{definition}
  1265. Given schedules \:p, \:q, and a map $k:\:I\conc\:I\to\:2$, 
  1266. their {\em concatenation} is defined to be
  1267. an object $\:p\cat\:q$, 
  1268. together with a map $c:\:p\conc\:q\to\:p\cat\:q$, 
  1269. such that
  1270. \begin{enumerate}
  1271. \item\label{c1}
  1272. for any pair of maps $(e:\:I\to\:p,e':\:I\to\:q)$, 
  1273. there exists a unique map \hbox{$e{;}e':\:2\to\:p\cat\:q$} making the following diagram commute:
  1274. $$\begin{diagram}
  1275. \:I\conc\:I&\rTo^{e\conc e'}&\:p\conc\:q\\
  1276. \dTo^k&&\dTo_c\\
  1277. \:2&\rTo^{e{;}e'}&\:p\cat\:q\\
  1278. \end{diagram}$$
  1279. \item
  1280. $c:\:p\conc\:q\to\:p\cat\:q$ factors uniquely through any other map $\:p\conc\:q\to\:r$ satisfying (\ref{c1}).
  1281. \end{enumerate}
  1282. \end{definition}
  1283. Notice that we can express this as a single diagram as appears in \cite{CCMP}
  1284. $$\begin{diagram}
  1285. \hbox{hom}(\:I,\:p\times\:q)\otimes(\:I\conc\:I)&\rTo&\:p\conc\:q\\
  1286. \dTo^{1\otimes k}&&\dTo_c\\
  1287. \hbox{hom}(\:I,\:p\times\:q)\otimes\:2&\rTo^{!}&\:p\cat\:q\\
  1288. \end{diagram}$$
  1289. so that concatenation is in fact a colimit.
  1290. \section{Schedule Composition}
  1291. Considering the second use of schedule map described above, one may
  1292. then describe a notion of system composition as follows.
  1293. We start with a collection of components each of which may be described by a
  1294. schedule.
  1295. These components may contain other (sub)components,
  1296. so we also provide maps giving the subcomponent/component relationships.
  1297. Specifically, we have a directed {\em graph} $G=(V,W)$, each of whose
  1298. vertices $v\in V$ is associated with some component and thence to the
  1299. schedule $\:p_v$ for that component;
  1300. each edge $w\in W$ has a source $w_0\in V$ and a target $w_1\in V$ and
  1301. a corresponding schedule map $f_w:\:p_{w_0}\to\:p_{w_1}$.
  1302. Call this collection $(V,W,(\:p_v)_{v\in V},(f_w)_{w\in W})$
  1303. a {\em diagram} of \%D-schedules.
  1304. The question then arises of what single schedule $\:p$ best describes this
  1305. entire system of components.
  1306. The following two properties should hold of this system schedule.
  1307. \begin{enumerate}
  1308. \item
  1309. All of the component schedules map into the system schedule $\:p$
  1310. in a consistent way.
  1311. Formally this means we have schedule maps
  1312. $g_v:\:p_v\to\:p$ for all $v\in V$,
  1313. and we require that for any edge $w\in W$ and any event $e\in E_{w_0}$
  1314. that $g_{w_1}(f_w(e))=g_{w_0}(e)$
  1315. (i.~e., no matter which component we view a particular event from, the
  1316. $g$ maps take it to the same event of $\:p$).
  1317. \end{enumerate}
  1318. \begin{definition}
  1319. The collection $(\:p, (g_v)_{v\in V})$ is said to be {\em consistent}
  1320. with the given diagram if it satisfies this property
  1321. ($g_{w_1}\of f_w=g_{w_0}$ for all $w\in W$)
  1322. \end{definition}
  1323. \begin{enumerate}
  1324. \setcounter{enumi}{1}
  1325. \item
  1326. The schedule \:p is the least constrained such schedule.
  1327. That is, we now consider all schedules consistent with the given diagram;
  1328. given any alternative consistent schedule $\:p'$ with inclusions
  1329. $(g'_v:\:p_v\to\:p')_{v\in V}$, the least constrained schedule $\:p$
  1330. should have a map $h:\:p\to\:p'$ into it, and the inclusions should
  1331. agree, i.~e., $h(g_v(e))=g'_v(e)$ for all components $v\in V$ and all
  1332. events $e\in E_v$.
  1333. \end{enumerate}
  1334. One further desired requirement is that for any given
  1335. $\:p'$ with inclusions $(g'_v:\:p_v\to\:p')_v$ $h$ be unique.
  1336. Note first of all, that once we include this in our list of desired
  1337. properties for $\:p$, we have immediately that $\:p$ is unique up to
  1338. isomorphism (since if $\:p'$ also satisfies these properties, then we
  1339. must have a unique map $h':\:p'\to\:p$, and also unique maps $\:p\to\:p$ and
  1340. $\:p'\to\:p'$ which by uniqueness must be identities, so $hh'$ and $h'h$
  1341. are thus identities).
  1342. Secondly, we could also view the $g':\:p_v\to\:p'$ as representing a
  1343. family of observations of all of the components $\:p_v$, in which case
  1344. this last uniqueness requirement gives us a bijective correspondence
  1345. between such families of observations and single observations
  1346. $h:\:p\to\:p'$ of $\:p$.
  1347. Combining, we get
  1348. \begin{definition}
  1349. Given a diagram of \%D-schedules, $(V,W,(\:p_v)_{v\in V},(f_w)_{w\in W})$,
  1350. its {\em composition}, is a consistent $\:p, (g_v:\:p_v\to\:p)_{v\in V}$
  1351. such that for all other consistent $\:p', (g'_v:\:p_v\to\:p')_{v\in V}$
  1352. there is a unique $h:\:p\to\:p'$ such that $h\of g_v=g'_v$ for all
  1353. $v\in V$.
  1354. \end{definition}
  1355. In the terminology of category theory, a consistent $\:p', (g'_v:\:p_v\to\:p')_{v\in V}$ is actually a {\em cocone} (dual to a {\em cone} in which the morphisms point {\em away} from the apex object \:p), 
  1356. and the single $\:p, (g_v:\:p_v\to\:p)_{v\in V}$ through which all others map
  1357. is nothing more or less than a {\em colimit} of the given diagram in the category of \%D-schedules.
  1358. A particular example for the case of preorder schedules has
  1359. $(V,W)$ being the graph
  1360. \setlength{\unitlength}{0.0125in}
  1361. $$\begin{picture}(120,130)(160,535)
  1362. \thicklines
  1363. \put(160,600){\vector(2,-1){120}}
  1364. \put(160,600){\vector(2, 1){120}}
  1365. \put(145,600){\makebox(0,0)[lb]{\raisebox{0pt}[0pt][0pt]{$C$}}}
  1366. \put(285,535){\makebox(0,0)[lb]{\raisebox{0pt}[0pt][0pt]{$B$}}}
  1367. \put(285,655){\makebox(0,0)[lb]{\raisebox{0pt}[0pt][0pt]{$A$}}}
  1368. \end{picture}
  1369. i.~e., 3 components and 2 component relationships, with the following
  1370. corresponding schedules and schedule maps
  1371. $$\setlength{\unitlength}{0.0088in}
  1372. \begin{picture}(745,360)(30,430)
  1373. \thicklines
  1374. \put(475,555){\vector( 3, 1){68}}
  1375. \put(475,670){\vector( 3,-1){68}}
  1376. \put(250,610){\vector( 1, 0){295}}
  1377. \put(250,565){\vector( 2,-1){ 36}}
  1378. \put(250,660){\vector( 2, 1){ 34}}
  1379. \multiput(545,555)(13.52941,0.00000){18}{\makebox(0.6333,0.9500){\tenrm .}}
  1380. \multiput(545,670)(13.52941,0.00000){18}{\makebox(0.6333,0.9500){\tenrm .}}
  1381. \multiput(545,555)(0.00000,14.37500){9}{\makebox(0.6333,0.9500){\tenrm .}}
  1382. \multiput(775,555)(0.00000,14.37500){9}{\makebox(0.6333,0.9500){\tenrm .}}
  1383. \multiput(285,440)(13.52941,0.00000){18}{\makebox(0.6333,0.9500){\tenrm .}}
  1384. \multiput(285,555)(13.52941,0.00000){18}{\makebox(0.6333,0.9500){\tenrm .}}
  1385. \multiput(285,440)(0.00000,14.37500){9}{\makebox(0.6333,0.9500){\tenrm .}}
  1386. \multiput(515,440)(0.00000,14.37500){9}{\makebox(0.6333,0.9500){\tenrm .}}
  1387. \multiput(285,670)(13.52941,0.00000){18}{\makebox(0.6333,0.9500){\tenrm .}}
  1388. \multiput(285,785)(13.52941,0.00000){18}{\makebox(0.6333,0.9500){\tenrm .}}
  1389. \multiput(285,670)(0.00000,14.37500){9}{\makebox(0.6333,0.9500){\tenrm .}}
  1390. \multiput(515,670)(0.00000,14.37500){9}{\makebox(0.6333,0.9500){\tenrm .}}
  1391. \multiput( 30,555)(13.75000,0.00000){17}{\makebox(0.6333,0.9500){\tenrm .}}
  1392. \multiput( 30,670)(13.75000,0.00000){17}{\makebox(0.6333,0.9500){\tenrm .}}
  1393. \multiput( 30,555)(0.00000,14.37500){9}{\makebox(0.6333,0.9500){\tenrm .}}
  1394. \multiput(250,555)(0.00000,14.37500){9}{\makebox(0.6333,0.9500){\tenrm .}}
  1395. \thicklines
  1396. \put(295,535){\makebox(0,0)[lb]{\raisebox{0pt}[0pt][0pt]{$B$}}}
  1397. \put(310,500){\makebox(0,0)[lb]{\raisebox{0pt}[0pt][0pt]{$b_0$}}}
  1398. \put(350,500){\makebox(0,0)[lb]{\raisebox{0pt}[0pt][0pt]{$b_1$}}}
  1399. \put(395,500){\makebox(0,0)[lb]{\raisebox{0pt}[0pt][0pt]{$b_2$}}}
  1400. \put(440,500){\makebox(0,0)[lb]{\raisebox{0pt}[0pt][0pt]{$b_3$}}}
  1401. \put(480,500){\makebox(0,0)[lb]{\raisebox{0pt}[0pt][0pt]{$b_4$}}}
  1402. \put(310,495){\vector( 1, 0){40}}
  1403. \put(350,495){\vector( 1, 0){45}}
  1404. \put(395,495){\vector( 1, 0){45}}
  1405. \put(440,495){\vector( 1, 0){40}}
  1406. \thinlines
  1407. \put(400,475){\vector( 2, 1){40}}
  1408. \put(310,495){\vector( 4,-1){90}}
  1409. \put(350,495){\vector( 2,-1){45}}
  1410. \put(440,495){\vector( 3,-2){30}}
  1411. \thicklines
  1412. \put( 75,640){\makebox(0,0)[lb]{\raisebox{0pt}[0pt][0pt]{$C$}}}
  1413. \put( 55,615){\makebox(0,0)[lb]{\raisebox{0pt}[0pt][0pt]{$c_0$}}}
  1414. \put( 95,615){\makebox(0,0)[lb]{\raisebox{0pt}[0pt][0pt]{$c_1$}}}
  1415. \put(140,615){\makebox(0,0)[lb]{\raisebox{0pt}[0pt][0pt]{$c_2$}}}
  1416. \put(185,615){\makebox(0,0)[lb]{\raisebox{0pt}[0pt][0pt]{$c_3$}}}
  1417. \put(225,615){\makebox(0,0)[lb]{\raisebox{0pt}[0pt][0pt]{$c_4$}}}
  1418. \put( 55,610){\vector( 1, 0){40}}
  1419. \put( 95,610){\vector( 1, 0){45}}
  1420. \put(140,610){\vector( 1, 0){45}}
  1421. \put(185,610){\vector( 1, 0){40}}
  1422. \thicklines
  1423. \put(295,680){\makebox(0,0)[lb]{\raisebox{0pt}[0pt][0pt]{$A$}}}
  1424. \put(315,715){\makebox(0,0)[lb]{\raisebox{0pt}[0pt][0pt]{$a_0$}}}
  1425. \put(355,715){\makebox(0,0)[lb]{\raisebox{0pt}[0pt][0pt]{$a_1$}}}
  1426. \put(400,715){\makebox(0,0)[lb]{\raisebox{0pt}[0pt][0pt]{$a_2$}}}
  1427. \put(445,715){\makebox(0,0)[lb]{\raisebox{0pt}[0pt][0pt]{$a_3$}}}
  1428. \put(485,715){\makebox(0,0)[lb]{\raisebox{0pt}[0pt][0pt]{$a_4$}}}
  1429. \put(315,725){\vector( 1, 0){40}}
  1430. \put(355,725){\vector( 1, 0){45}}
  1431. \put(400,725){\vector( 1, 0){45}}
  1432. \put(445,725){\vector( 1, 0){40}}
  1433. \thinlines
  1434. \put(355,765){\vector( 4,-1){55}}
  1435. \put(445,725){\vector( 3, 4){25}}
  1436. \put(315,725){\vector( 1, 1){40}}
  1437. \thicklines
  1438. \put(570,610){\vector( 1, 0){40}}
  1439. \put(610,610){\vector( 1, 0){45}}
  1440. \put(655,610){\vector( 1, 0){45}}
  1441. \put(700,610){\vector( 1, 0){40}}
  1442. \thinlines
  1443. \put(610,650){\vector( 4,-1){55}}
  1444. \put(700,610){\vector( 3, 4){25}}
  1445. \put(570,610){\vector( 1, 1){40}}
  1446. \put(660,590){\vector( 2, 1){40}}
  1447. \put(570,610){\vector( 4,-1){90}}
  1448. \put(610,610){\vector( 2,-1){45}}
  1449. \put(700,610){\vector( 3,-2){30}}
  1450. \end{picture}\hss
  1451. In short, we have taken the processes $A$,$B$ and synchronized the
  1452. events $a_i$ with $b_i$.
  1453. Given any directed graph $(V,W)$ there is a corresponding category
  1454. obtained by the standard construction of taking the objects to be the
  1455. vertices and morphisms to be paths of edges.
  1456. A diagram is then a functor from this category to the category of
  1457. \%D-schedules, a consistent schedule with its inclusions forms a
  1458. {\em co-cone} over this diagram, and the notion of the composition
  1459. of this diagram of schedules can be seen as the {\em co-limit} of
  1460. this diagram.
  1461. Now, at this point, there is no guarantee that for any given diagram
  1462. of schedules, the composition will actually exist given any such
  1463. collection of component \%D-schedules and maps.
  1464. However, for the cases of interest to us we have
  1465. \begin{theorem}
  1466. If \%D is a closed semiring, compositions as defined above always exist.
  1467. \end{theorem}
  1468. One way of obtaining this is by applying the categorical sledgehammer
  1469. and deriving it as a special case of the following result of Betti,
  1470. Carboni, Street and Walters \cite{BCSW}:
  1471. \begin{theorem}
  1472. If \%D is a closed monoidal category that is cocomplete, 
  1473. then {\%D\hCat} is also cocomplete.
  1474. \end{theorem}
  1475. But another way to understand this result in the closed semiring case
  1476. is to consider the actual construction of the composition in the
  1477. simple case where all of the event sets are finite.
  1478. First we consider the underlying event set of the composition.
  1479. \begin{lemma}
  1480. The underlying event set E of the \%D-schedule composition of $(E_j,\^d_j)$,
  1481. $(f_k:E_{k_1}\to E_{k_2})_{k\in K}$ is just the \_1-schedule (set)
  1482. composition of the sets $(E_j)_{j\in J}$ and functions $(f_k)_{k\in
  1483. \end{lemma}
  1484. \begin{proof}
  1485. The forgetful functor $V:\%D\hCat\to\Set$,
  1486. taking each \%D-schedule $\:p$ to its underlying event set $V\:p=E$, 
  1487. has a right adjoint R taking a set $E$ to a schedule $RE=(E,\^d_{RE})$ 
  1488. on that set, the schedule $RE$ being one in which all constraints are
  1489. maximal (i.~e., $\^d_{RE}(e,e')=(\bigvee\%D)$ for all $e,e'\in E$).
  1490. Any functor having a right adjoint necessarily preserves colimits;
  1491. thus, $V$ preserves schedule compositions.
  1492. \end{proof}
  1493. One may now take a \%D-schedule diagram and determine the
  1494. underlying events for the composed schedule.
  1495. This is the standard construction for the colimit in set:
  1496. take the disjoint union of all of the event sets $E_v$
  1497. and then quotient out by the minimal equivalence relation
  1498. identifying every pair of events joined by one of the $f_w$
  1499. (i.~e., every pair of events $e\in E_v$, $e'\in E_{v'}$ for which
  1500. there exists $w\in W$ such that $w_0=v$, $w_1=v'$ and $f_w(e)=e'$).
  1501. This gives us the underlying event set $E$ and the underlying
  1502. functions $(g_v:E_v\to E)_v$.
  1503. One then has to determine the matrix of constraints $\^d_{\:p}$ for the
  1504. composed schedule.
  1505. Start by filling in all of the constraints that
  1506. appear in any of the components.
  1507. That is, we start with
  1508. $$\^d^{(0)}(e,e')=\bigvee_{(v,e_v,e_v')|g_v(e_v)=e'\land
  1509. g_v(e_v')=e'}\^d_v(e_v,e_v')$$
  1510. This produces a matrix that has all of the minimum
  1511. constraints necessary, but may not satisfy the transitivity and
  1512. reflexivity rules $(T)$ and $(R)$ from the definition of schedules.
  1513. One may then run a transitive closure algorithm (one extended to
  1514. general closed semirings, e.~g., Floyd/Warshall\cite{Flo62,War62,Pr89a}), one that at each step
  1515. replaces a constraint $\^d^{(n)}(e,e')$ with a possibly stronger constraint
  1516. $\^d^{(n+1)}=\^d^{(n)}(e,e')\lor\^d^{(n)}(e,e'')\otimes\^d^{(n)}(e'',e')$
  1517. (for some $e''\in E$), to eventually obtain the desired matrix
  1518. $\^d=\^d^{(\omega)}$ which does satisfy the axioms $(R)$ and $(T)$.
  1519. For physical \%D-schedules, the compositions need not exist in general.  
  1520. However, we still have the following helpful result
  1521. \begin{theorem}\label{thm:phys}
  1522. If the composition of a given diagram of physical \%D-schedules exists, then this composition is isomorphic to the composition of the same diagram as (general) \%D-schedules.
  1523. \end{theorem}
  1524. \noindent This follows from 
  1525. \begin{lemma}\label{lem:phys}
  1526. If $h:\:p\to\:p'$ is a general \%D-schedule map, 
  1527. and \:p' is a physical \%D-schedule, then so is \:p.
  1528. \end{lemma}
  1529. \begin{proof}
  1530. If $E$ is the event set of \:p, 
  1531. then for all $e\in E$, 
  1532. $I\sqsubseteq\^d_{\:p}(e,e)\sqsubseteq\^d_{\:p'}(h(e),h(e))=I$
  1533. \end{proof}
  1534. \begin{proofl}{Proof of Theorem \ref{thm:phys}}
  1535. Given a diagram, we know that the general \%D-schedule composition
  1536. $(\:p, g_v:\:p_v\to\:p)$ exists and that if the physical \%D-schedule
  1537. composition $(\:p',g_v':\:p_v\to\:p'$ exists,
  1538. then we have a (general \%D-schedule) map $h:\:p\to\:p'$ for which $h\of g=g'$.
  1539. Lemma \ref{lem:phys} then implies that $\:p$ must be a physical \%D schedule,
  1540. and thence that the maps $g_v$ and $h$ are all physical \%D-schedule maps,
  1541. from which it is fairly easy to conclude as before that $\:p$ and $\:p'$ must be isomorphic.
  1542. \end{proofl}
  1543. So, to find the composition of a diagram of {\em physical\/}
  1544. \%D-schedules, one can compute their composition as general
  1545. \%D-schedules, and, if that turns out to satisfy the $\^d(x,x)=I$
  1546. requirement, then this composition will be the physical \%D-schedule
  1547. composition as well.
  1548. An example of where this kind of theorem does not hold is the case of
  1549. the composition of a diagram of partial order schedules with monotone maps,
  1550. calculated in the realm of partial order schedules, i.~e., the category $\_\Pos$ of partially ordered sets and monotone functions, 
  1551. which we take to be a subcategory of $\_2\hCat$, 
  1552. the realm of preorder schedules.
  1553. Calculating the schedule composition directly in $\_2\hCat$
  1554. can yield a schedule that is quite different from what we get by calculating it in $\_\Pos$.
  1555. Consider the case where we have a diagram of three schedules, 
  1556. $A\leftarrow C\to B$, each having the same underlying set of two events $\{e_1,e_2\}$ with the underlying set maps being the identity on this set, but with the events unordered in $C$, ordered $e_1\le e_2$ in $A$ and $e_2\le e_1$ in $B$.
  1557. Their composition as preorders yields a two-event schedule $\{e_1,e_2\}$ where both orderings hold, however this resulting schedule is {\em not} actually a partial order.
  1558. If the analogue to Theorem \ref{thm:phys} held,
  1559. this would imply that the partial order composition does not exist,
  1560. but actually, there is such a composition, namely a single event
  1561. schedule.
  1562. Notice that if we instead consider partial orders not as the subclass of
  1563. preorders consisting of those that happen to satisfy the antisymmetry axiom, but rather as the subclass of {\em prosset} orders (i.~e., in \_3\hPhys) consisting of those satisfying the axiom
  1564. $$\^d(x,y)=I\implies x=y$$
  1565. or equivalently
  1566. $$x\le y\implies x=y\lor x\prec y$$
  1567. then we {\em do} have a corresponding result, namely that {\em if} the composition of a diagram of partial-orders exists {\em then} it is isomorphic to their composition as general \_3-schedules.
  1568. This is a matter of going through the explicit construction above and noting that if the composed schedule has $\^d(x,y)=I$ for some pair of distinct events $(x,y)$, then one of the schedules comprising the composition must also have such a pair of events.
  1569. The reason this does not contradict the previous paragraph is that
  1570. while we are considering the same class of schedules,
  1571. the schedule {\em maps} we allow are only those which are {\em strictly} 
  1572. monotone ($x\prec y\implies f(x)\prec f(y)$).
  1573. That is, our schedule category is not $\_\Pos$ (partially ordered sets and monotone functions) but rather $\_\Pos_{<}$ (partially ordered sets and {\em strict} monotone functions).
  1574. The eventual impact of the choice to use only strict monotone maps
  1575. is that it prevents distinct ordered events from being synchronized, 
  1576. i.~e., mapped to the same event in the codomain.
  1577. As noted above, the composition of physical \%D-schedules does not always exist, that is to say, {\%D\hPhys} is not cocomplete.  
  1578. Nor, for that matter, is $\_\Pos_{<}$.
  1579. Nevertheless, both {\%D\hPhys} and $\_\Pos_{<}$ 
  1580. satisfy a somewhat weaker condition, and this
  1581. will turn out to be sufficient to our needs 
  1582. when considering the question of {\em process} composition in the next chapter.
  1583. \begin{definition}
  1584. A category \%C is {\em almost cocomplete} if, every diagram either 
  1585. \begin{itemize}
  1586. \item
  1587. has a colimit, or
  1588. \item
  1589. has no co-cone at all, i.~e., for no object $\:q$ does there exist a collection of morphisms $(g_v:\:p_v\to q)_{v\in V}$ from the objects of the diagram $(\:p_i)_{v\in V}$ into $\:q$ such that the required commutativity properties hold.
  1590. \end{itemize}
  1591. \end{definition}
  1592. Restating this for schedule categories, we see that a schedule category is almost cocomplete precisely when every diagram of schedules either has a composition or is such that no schedule is consistent with it.
  1593. \begin{theorem}
  1594. If \%D is a closed monoidal category that is cocomplete, 
  1595. then {\%D\hPhys} is almost cocomplete.
  1596. \end{theorem}
  1597. \begin{proof}
  1598. It suffices to show that if a co-cone $(\:p':g_v:\:p_v\to\:p')_{v\in V}$ over a given diagram exists, then a co-limit exists as well.  
  1599. We already know that if we consider the corresponding diagram in \%D\hCat, 
  1600. there will be a colimit $(\:p:g_v:\:p_v\to\:p)_{v\in V}$ 
  1601. and thus a unique (\%D\hCat) map $h:\:p\to\:p'$.
  1602. By Lemma \ref{lem:phys}, 
  1603. \:p and hence this co-limit is present in {\%D\hPhys} as well.
  1604. \end{proof}
  1605. \section{Labeled Schedules}
  1606. Analogous to the notion of labeled partial order or {\em pomset} as described in \cite{Pr84},
  1607. we have the notion of a {\em labeled schedule} $\<\:p,\^m,\^S>$.
  1608. Here $\:p=(E,\^d)$ is a schedule in the previous sense,
  1609. and $\^m:E\to\Sigma$ is a labeling map.
  1610. $\^S\in\Set$ is referred to as the {\em alphabet}.
  1611. As with ordinary schedules, we can make a category out of these, 
  1612. here using the comma category construction \cite{Mac}.  
  1613. \begin{definition}
  1614. Given categories $\%A,\%B,\%C$ and functors $V:\%A\to\%C, W:\%B\to\%C$
  1615. the {\em comma category} $(V\comma W)$ is the category for which
  1616. \begin{itemize}
  1617. \item
  1618. objects are triples $\<a,\^g,b>$, where $a\in\ob(\%A)$, $b\in\ob(\%B)$ and $\^g:Va\to Wb$ in \%C.
  1619. \item
  1620. morphisms are pairs $\<\^a:a\to a',\^b:b\to b'>$ for which the following diagram commutes:
  1621. $$\begin{diagram}
  1622. Va&\rTo^{V\^a}&Va'\\
  1623. \dTo^{\^g}&&\dTo^{\^g'}\\
  1624. Wb&\rTo^{W\^b}&Wb'\\
  1625. \end{diagram}$$
  1626. \item
  1627. $1_{\<a,\^g,b>}=\<1_a,1_b>$, while $\<\^a':a'\to a'',\^b':b'\to b''>\circ\<\^a:a\to a',\^b:b\to b'>=\<\^a'\circ\^a:a\to a'',\^b'\circ\^b:b\to b''>$.
  1628. \end{itemize}.
  1629. \end{definition}
  1630. Starting with a given category of ordinary schedules \%T,
  1631. the corresponding category of labeled schedules is then $(V\comma 1_{\_\Set})$,
  1632. where $V:\%T\to\_\Set$ is the forgetful functor taking an ordinary schedule 
  1633. to its underlying event set and $1_{\_\Set}:\_\Set\to\_\Set$
  1634. is the identity functor.  
  1635. If there is no ambiguity about the functors involved we denote this
  1636. $(\%T\comma\_\Set)$.
  1637. A morphism of labeled schedules $\<\:p,\^m,\^S>\to\<\:q,\^n,\^G>$
  1638. is then a pair of maps $\<f,\^f>$ where $f:\:p\to\:q$ is an (unlabeled) schedule map and 
  1639. $$\begin{diagram}
  1640. V\:p&\rTo^{Vf}&V\:q\\
  1641. \dTo^{\^m}&&\dTo^{\^n}\\
  1642. \^S&\rTo^{\^f}&\^G\\
  1643. \end{diagram}$$
  1644. commutes.  
  1645. Operations that are defined via universal constructions 
  1646. (e.~g., concurrence or concatenation)
  1647. follow automatically from the definition of morphism.
  1648. \cite{CCMP} discusses these at length and in any case they are not 
  1649. qualitatively different from the corresponding operations already 
  1650. described for unlabeled schedules.
  1651. Carrying out this construction using $\%T=\_\Pos$ yields the category $\_\Pom$ of labeled partial orders (pomsets).  
  1652. Of interest however are those operations arising from label manipulations.
  1653. For the rest of this section, \%B refers to a category of labeled 
  1654. schedules arising from the comma construction on some category \%T of 
  1655. ordinary schedules, be it \_\Pos, {\%D\hCat} or {\%D\hPhys} for some temporal 
  1656. domain \%D,
  1657. For any particular alphabet $\^S\in\Set$, we can find
  1658. within $\%B$ the category $\%B_{\^S}$ of behaviors over that alphabet.  
  1659. $\%B_{\^S}$ is actually $(V\comma\^S)$, where $\^S:\_1\to\_\Set$ is the functor taking the single object of \_1 to the set $\^S$.
  1660. Now, for any alphabet translation $t:\^G\to\^S$ 
  1661. there are two canonical functors we can define:
  1662. \begin{itemize}
  1663. \item
  1664. The {\em renaming} $t_*:\%B_{\^G}\to\%B_{\^S}$,
  1665. which takes a behavior $q=\<\:q,\nu,\^G>$ and relabels all of its
  1666. events to produce $\<\:q,t\nu,\^S>$.
  1667. $$\commdiag
  1668. {V(\:q=t_*\:q)&&\cr
  1669. \dTo{}{\mu}&&\cr
  1670. \^G&\rTo{t}{}&\^S\cr
  1671. \item The {\em restriction} $t^*:\%B_{\^S}\to\%B_{\^G}$,
  1672. which, in the case of $t$ being a monomorphism, 
  1673. takes $p=\<\:p,\mu,\^S>$ to $\<\:p\cap\mu^{-1}t(\^G),t^{-1}\mu,\^G>$, that is, we take
  1674. $t^*p$ to be that subbehavior of $p$ whose events are those with labels
  1675. in $t(\^G)$.  If, in fact, the underlying temporal structure
  1676. category $\%T$ {\em is} $\%D\hCat$, which is actually complete, we can
  1677. instead obtain the unlabeled schedule $t^*\:p$ by taking the pullback
  1678. $$\begin{diagram}
  1679. t^*\:p&\rTo{}{}&\:p\\
  1680. \dTo{}{}&&\dTo{}{\mu}\\
  1681. E\^G&\rTo{Et}{}&E\^S\\
  1682. \end{diagram}$$
  1683. Here, $E:\Set\to\%T$ is the right adjoint to {\%T}'s forgetful functor
  1684. (e.~g., the clique functor in the case of preorders).  That this is an 
  1685. equivalent construction is proven in \cite{CCMP}.
  1686. \end{itemize}
  1687. The projection $\^s:\%B\to\Set$ (taking any
  1688. behavior $\<\:p,\mu,\^S>$ to its alphabet $\^S$) is in fact a
  1689. {\it fibration} \cite{J83}.  
  1690. For a more detailed discussion of this in the context of labeled
  1691. Petri-nets see \cite{Win88}. 
  1692. In the case of general {\%T} where $t$ is not injective, it is not
  1693. necessarily the case that $t^*$ exists.
  1694. For our purposes, it will suffice to note that for any $t$ for which
  1695. $t_*$ and $t^*$ both exist, we have that $t^*$ is a right adjoint of
  1696. $t_*$, which is actually a stricter condition.
  1697. \comment{
  1698. In fact, in $\Pom$, $t^*$ never exists if $t$ is not injective.
  1699. This is one of a number of points of grief resulting from the fact
  1700. that the category of posets is actually a subcategory of the
  1701. {*** why we prefer Prom to Pom}
  1702. In general, we consider ourselves to have been given a category $\%B$,
  1703. understood to be some $(\mbox{\%T}\comma\^S)$ where $\%T$ is a suitable
  1704. subcategory of \%D\hCat.   
  1705. The objects of $\%B$ are behaviors and whose morphisms can be
  1706. interpreted as relating behaviors to component behaviors (as above).
  1707. This category is equipped with a projection $\^s:\%B\to\Set$ (giving
  1708. the alphabet of actions associated with any given behavior)
  1709. and for each alphabet $\^S$ we also have the fibre category
  1710. $\%B_{\^S}$ consisting of behaviors of {\%B} over that particular
  1711. alphabet, or alternatively, the inverse image under $\^s$ 
  1712. of the object $\^S$ and its identity morphism.
  1713. We also assume for any $t:\^G\to\^S$ the existence of
  1714. translation ($t_*:\%B_{\^G}\to\%B_{\^S}$) and in the cases
  1715. where we need it, the existence of the restriction
  1716. ($t^*:\%B_{\^S}\to\%B_{\^G}$) functor accompanied by an adjunction
  1717. $t_*\dashv t^*$.
  1718. Given our concern about colimits, we should note that if $\%T$ is
  1719. almost cocomplete and its forgetful functor 
  1720. preserves colimits, then $\%B$ is also almost cocomplete\footnote
  1721. {In the case of $\Pom$, this result is not applicable, but
  1722. we still have cocompleteness.  
  1723. However, colimits in {\Pom} do not respect the alphabets, that is, 
  1724. $\^s:\Pom\to\Set$ does not preserve colimits.  
  1725. For this reason we prefer, when considering partial orders
  1726. to either
  1727. \begin{enumerate}
  1728. \item
  1729. think of them as preorders, i.~e., work in \_2\hCat,
  1730. allowing for the possibility of distinct simultaneous events, or
  1731. \item
  1732. interpret the order relations as being strict,
  1733. i.~e., work in $\Pom_{<}=(\Pos_{<}\comma\Set)$,
  1734. \end{enumerate}
  1735. and avoid using {\Pom} altogether.}.
  1736. Likewise if $\%T$ is complete, then so is $\%B$.
  1737. One can then go on to define some basic behaviors and behavior
  1738. operations using colimits, limits, restrictions, translations.
  1739. Another source of operations is the lifting of the symmetric monoidal
  1740. structure $(\otimes,I)$ from {\%D} to {\%D\hCat} and thence to {\%B},
  1741. providing both of the latter categories with a $\otimes$
  1742. ($\otimes_{\%B}$ is orthocurrence as in \cite{Pr86}) and an $I$.  
  1743. Details of the constructions are in \cite{CCMP}.
  1744. \chapter{Processes}\label{chapter:proc}
  1745. \section{Choice and Process Morphisms}
  1746. The element missing from the the machinery presented thus far for schedules is that of nondeterminism or {\em choice}.
  1747. In particular, as we have presented it, a schedule carries the implicit assumption that all of the constituent events will be enacted.
  1748. If one wishes to indicate that an event need {\em not} occur in certain circumstances, 
  1749. let alone the possibility that two events may mutually exclude each other,
  1750. additional structure is required.  
  1751. It is this augmented schedule-with-choices notion that we shall refer to as a {\em process}.
  1752. Winskel \cite{NPW}, in his event structure model, provides for nondeterminism by producing a single schedule
  1753. (i.~e., the partial order case thereof) and annotating it with a {\em conflict} relation.
  1754. The interpretation placed on this is that only some conflict-free subset of the given events will occur.  
  1755. Thus, a process that enacts one of the events $a$ or $b$ but not both would be depicted as a schedule 
  1756. containing the events $a$ and $b$, but also containing the pair $(a,b)$ in its conflict relation.
  1757. Note that in this case we still have to provide temporal information relating $a$ and $b$ even though
  1758. conflict renders such information irrelevant.
  1759. While the event structure model provides for a fairly simple structure, its conflation of causal and temporal order is troublesome when attempting to derive generalizations in which the temporal information is given by something other than a partial order.
  1760. While we will not go so far as to claim that causality, unlike time, is fundamentally a binary relation, i.~e., either one event causes another or it does not, we do however suggest that extensions to this depiction of causality will not necessarily take the same form as the corresponding extension to the notion of time as a partial order.  
  1761. The approach we shall take is the one adopted by Pratt \cite{Pr86} and Grabowski \cite{Gra} in the original pomset model, namely that which represents a choice by using distinct schedules.
  1762. In this framework, a process is then a {\em set} of schedules.  
  1763. The interpretation here is that some schedule in the process' set will be followed, 
  1764. i.~e.,  there exists a schedule in the process' set for which all events will occur in accordance 
  1765. with its temporal constraints.
  1766. For example, the above process that can perform one of $a$ or $b$ is now a set containing two schedules, 
  1767. each having but a single event.
  1768. Additional structure is clearly necessary, but for now we consider the implications of this set-of-sets notion of process by itself.
  1769. Henceforth, \%B shall refer to some category of schedules, labeled or unlabeled, as developed in the previous chapter (e.~g., {\%D\hPhys} for some suitable temporal domain \%D).  \%B essentially serves as a parameter in the process construction.
  1770. \subsection{Processes as DNF Propositions}
  1771. So consider, for now, the individual schedules as bare sets, i.~e., ignoring any temporal information that may be present.  We then have an outer set, which we shall call the {\em alternative} or {\em index} set, i.~e., the set of alternatives indexing the schedules from which the process has to choose.
  1772. The first observation is that this form of process is essentially a disjunctive normal form (DNF) representation.
  1773. That is, we have a set of disjuncts, namely the alternatives, each of which is itself a conjunction, 
  1774. i.~e., a schedule of events which {\em all} occur.
  1775. Taken as a whole, the process, stripped of its temporal information, is simply a DNF proposition concerning which events will actually occur.
  1776. Since a major goal of this work is to extend the notion of schedule composition to process composition,
  1777. we should, in the course of establishing our notion of process, also establish a corresponding notion 
  1778. of morphism from one process to another, 
  1779. the intention being that these morphisms play exactly the same role for processes 
  1780. as the above-described schedule morphisms do for schedules,
  1781. e.~g., relating an observation to a process or embedding one process in another.
  1782. With our processes being DNF propositions, a natural choice of morphism to use to relate these propositions is that of {\em implication}.
  1783. Consider the special case of conjunctions, where a suitable way to demonstrate that
  1784. $$\bigwedge_{i\in I} p_i \implies \bigwedge_{j\in J} q_j$$
  1785. is to exhibit a function $f:J\to I$ such that for all $j\in J$ we have $p_{f(j)}\implies q_j$.
  1786. Such a function provides an elementary proof by demonstrating that every conjunct on the right is implied by something on the left.  Moreover, if the implication holds, there will exist a proof of this form, though there is certainly no claim about it being unique.
  1787. Dually, we may prove
  1788. $$\bigvee_{i\in I} p_i \implies \bigvee_{j\in J} q_j$$
  1789. via a function $f:I\to J$ such that for all $i\in I$ we have $p_i\implies q_{f(i)}$.
  1790. Here, every disjunct on the left implies something on the right.
  1791. A category \%C determines a category of indexed families of objects of \%C via a standard construction.
  1792. \begin{definition}
  1793. For any category \%C, the category $\_\Fam(\%C)$ has objects of the form $\_C=(I,(C_i)_{i\in I})$ for some index set $I\in\_\Set$ and some collection of objects $C_i\in\ob(\%C)$, 
  1794. and morphisms $\_f:\_C^1\to\_C^2$ of the form $(f:I^1\to I^2,(f_i:C^1_i\to C^2_{f(i)})_{i\in I^1})$, where $f$ is a function and the $f_i$ are morphisms of \%C.   Composition and identity are given by $\_g\_f=(gf,(g_{f(i)}f_i)_{i\in I^1})$ and $1_{\_C}=(1_I,(1_{C_i})_{i\in I})$ respectively.
  1795. \end{definition}
  1796. That is, we provide a function between the index sets, and for every element of the domain's index set we provide a morphism relating the corresponding objects of \%C.  
  1797. Thus, given a category \%A of atomic propositions and implications thereof, we can construct
  1798. \begin{itemize}
  1799. \item
  1800. $\_\Fam(\%A)^{op}$, the category of conjunctive propositions on \%A (i.~e., conjunctions of atomic propositions).
  1801. Notice that in the case of conjunctions, the direction of the implication runs opposite to that of the functions involved, thus the need for the ${-}^{op}$.
  1802. \item
  1803. $\_\Fam(\_\Fam(\%A)^{op})$, the category of disjunctions of propositions of $\_\Fam(\%A)$, or, equivalently, the category of DNF propositions on \%A.
  1804. \end{itemize}
  1805. We now wish to generalize the two-step construction above by replacing $\_\Fam(\%A)$ by the schedule category \%B.  According to this generalization, a schedule can be interpreted as a generalized conjunction of event-occurrence propositions.
  1806. Therefore, it is not actually necessary to produce a category \%A of atomic event-occurrence propositions, since in the case of schedules, this provides no new information about the identities of events beyond what the schedule morphism itself already provides.
  1807. If a schedule morphism maps one event to another, those events are identified and thus the occurrence of one implies the occurrence of the other vacuously.
  1808. It is, however important to note that schedule morphisms run in a direction inverse to that of the implication between the corresponding propositions.
  1809. That is, if we have a schedule morphism $R\to S$, any occurrence of events satisfying $S$ necessarily satisfies $R$ as well.  Thus, as propositions, $S\implies R$.
  1810. The actual category of schedules-as-propositions is then $\%B^{op}$, which suggests that the corresponding category of processes, i.~e., DNF propositions instead of pure conjunctive propositions, is going to be $\_\Fam(\%B^{op})$.
  1811. \subsection{Adding Structure to the Alternative Set}
  1812. Of course, we should now consider what the actual structure on processes should be.
  1813. While our main motive in using a DNF style of process is that of achieving a separation of causal and temporal information, the structureless set of schedules described thus far achieves, in some sense, much too complete a separation.
  1814. \begin{itemize}
  1815. \item
  1816. Having an unstructured set of choices removes the possibility of describing {\em when} a particular choice takes place.  Thus we have the generally recognized advantage of {\em branch\-ing-time} models.
  1817. \item
  1818. There is nothing to relate events on distinct schedules within a process.
  1819. \end{itemize}
  1820. To elaborate on the latter objection, if, e.~g., one wishes to specify that, once events $a$ and $b$ occur, $c$ {\em may} occur, one may consider a process of two schedules whose event sets are $\{a,b\}$ and $\{a,b,c\}$.
  1821. However, unless we stipulate that all events used in schedules are drawn from some universal set of events, 
  1822. there is nothing to indicate that the two $a$'s are supposed to refer to the same event 
  1823. (``same'' in the sense that whether the event occurs has the same implications for observers of this process, no matter that it occurred in one schedule or the other).  
  1824. The situation becomes even more obscure should we be using labeled schedules and thus might want to specify something like ``$c$ {\em may} occur once $a$ has occurred {\em twice},'' though this is perhaps more properly a hazard of using event labels to specify events.
  1825. Thus the additional structure on processes should establish the required identities between events of the constituent schedules.
  1826. We already have a mechanism to facilitate this, namely that of schedule morphisms.
  1827. The alternative set will then be (at least) preordered, the idea being that if an event $c$ may optionally occur but only given that some other collection of events has occurred, we essentially have two schedules (alternatives), one containing only the predecessor events, the other containing $c$ as well; the latter alternative being later in the ordering on alternatives.
  1828. This mapping of alternative orderings to schedule morphisms suggests viewing the alternative set itself as a category, thus allowing for the concise definition of process as being a functor into the schedule category \%B.
  1829. \begin{definition}
  1830. Given a category (of schedules) $\%B$, a {\em process} $P$ over $\%B$ is a
  1831. category $A_P$ together with a functor $P:A_P\to\%B$.
  1832. \end{definition}
  1833. Having upgraded the alternative set from a mere set to a category, we should also present the corresponding upgrading of the $\_\Fam(\%B^{op})$ notion of process morphism.  
  1834. As might be expected, however, we have both the order structure on the alternative set and the various schedules' temporal constraints to contend with.
  1835. In this case, the function between the alternative sets becomes a functor and the family of schedule functions becomes a natural transformation.
  1836. \begin{definition}
  1837. A {\em process morphism} $f:P\to Q$ is a functor
  1838. $A_f:A_P\to A_Q$ together with a natural transformation
  1839. $f:QA_f\nato P:A_P\to\%B$.  
  1840. We denote the category of processes over $\%B$ as \PROC{\%B}.
  1841. \end{definition}
  1842. As a matter of convention, we take the direction of the process morphism to be the same as that of the implication of the corresponding propositions, which also happens to match the direction of the underlying set function on the alternative sets.
  1843. It is only in the unfortunate situation of schedules and schedule morphisms that the directions of the set functions and the implications happen to be different.
  1844. Given that we wish to adhere to previous conventions for schedule morphisms, the natural transformation must necessarily be in the opposite direction.
  1845. The import of the naturality itself
  1846. $$\commdiag
  1847. {QA_f(p)&\rTo{f_p}{}&P(p)\cr
  1848. \dTo{}{}&&\dTo{}{}\cr
  1849. QA_f(p')&\rTo{f_{p'}}{}&P(p')\cr
  1850. is simply that if satisfaction of $P$ implies satisfaction of $Q$, $P$ should ``agree with'' any identification of events made between schedules of $Q$.  
  1851. Otherwise an anomalous situation arises wherein for some pair of events of $P$, one has occurred, one has not, and $Q$ has both of these events identified.
  1852. Despite the categorical machinery thus far invoked, we have not yet introduced any real structure since while this definition allows for the introduction of a nontrivial ordering on $A_P$ and indicates how, in such a case, these orderings should be reflected in the constituent schedules, it does not require the ordering to be anything other than discrete.
  1853. Further stipulations will be necessary to obtain a more recognizable notion of process.
  1854. To that end, we now consider the various subcategories of \PROC{\%B} in which our true interest lies.
  1855. If we consider only processes $P$ for which $A_P$ is a discrete category,
  1856. we are, as noted above, back to our previous definition which
  1857. corresponds to the usual notion of process as a set of schedules with
  1858. no further relationships between the various alternative schedules.
  1859. We will refer to these as discrete processes and the corresponding
  1860. (full) subcategory as \PROCD{\%B}.
  1861. While there is implicit in our choice of a DNF form for process a general desire to separate causal from temporal information, one can only take this so far.  
  1862. In particular, it is still generally accepted that cause precedes effect.
  1863. In fact, it is only the converse implication of temporal order implying causation that we wish to suppress.
  1864. Thus, we would like a stipulation that requires the schedule corresponding to a later alternative in the 
  1865. alternative set ordering to contain all of the events of any predecessor schedules and furthermore to not introduce any tighter temporal constraints between any pairs of such events.
  1866. For this purpose we develop the notion of prefix. 
  1867. \subsubsection{Prefixes}
  1868. As noted earlier, if the structure of the process does not relate two of its alternative schedules 
  1869. in any way, then the choice between them is essentially made at the beginning of time.
  1870. If we could identify events on separate schedules within a process, 
  1871. this would provide a way of representing a {\em deferred} choice 
  1872. in the sense that an occurrence of an event or collection of events common to both schedules
  1873. does not necessarily commit the process to be following one or the other of the schedules in question.
  1874. That is, the choice made between the schedules is not seen to take place until either
  1875. \begin{itemize}
  1876. \item
  1877. we have the occurrence of some event that is present in only one of the schedules
  1878. \item
  1879. some event common to both schedules occurs, but the timing of the occurence
  1880. violates the constraints given by one of the schedules.
  1881. \end{itemize}
  1882. However, given that the morphisms we use to identify events have an implicit directionality to them,
  1883. we prefer to view the general situation of two schedules sharing some collection of events as rather 
  1884. that of two schedules sharing a common predecessor schedule.
  1885. In other words, we have 3 schedules, one which the process follows ``before'' the choice is made and the other two which represent the possible outcomes of the choice.
  1886. This view decomposes all choices into predecessor-successor pairs, i.e.,
  1887. all choices are now of the form, ``Either we stay with this schedule or we advance to the next one.''
  1888. What remains is to clarify the relationship between a schedule $\:p$ and any successor schedule $\:p'$.
  1889. In the realm of partial orders, a prefix of an order $\:p$ 
  1890. is a downward closed subset $\:p_0$, i.e., such that for any elements $x,y\in \:p$,
  1891. if we have that $x\le y$ and $y\in \:p_0$ then $x$ must be in $\:p_0$ as well.
  1892. This can equivalently be represented as a pullback
  1893. $$\begin{diagram}
  1894. \:p & \rInto & \:p'\\
  1895. \dTo^! && \dTo_{\chi}\\
  1896. \:1 & \rTo^0 & \:2\\
  1897. \end{diagram}
  1898. where \:2 is the usual two-element order $\{0,1|0\le1\}$.
  1899. The pullback essentially makes \:p be the inverse image under $\chi$ of $0$ 
  1900. and it is the ordering on \:2 that forces the prefix property.
  1901. One complication in translating this to the more general schedule frameork
  1902. is that the terminal object \:1 may not actually exist in \%B.  
  1903. For example, this is usually the case if we take $\%B=\%D\hPhys$.
  1904. Likewise the self-constraints in \:2 will need to be terminal in order for these pullbacks to exist in general.
  1905. With $\%D\hPhys$ we can, however, consider the corresponding diagram to be in $\%D\hCat$.  $\:1$ and $\:2$ thus need only be objects of \%D\hCat.
  1906. The general definition of prefix is then as follows:
  1907. \begin{definition}
  1908. \def\Bc{\overline{\%B}}
  1909. Given a category of schedules \%B, a {\em prefix classifier} for \%B is a map $k:\:1\to\:2$ in a category $\Bc$ of schedules, such that
  1910. \begin{itemize}
  1911. \item
  1912. $\Bc$ is complete and contains \%B as a full subcategory, 
  1913. \item
  1914. the inclusion $i:\%B\to\Bc$ is a monoidal functor 
  1915. (i.e., preserves $\otimes$ and \:I)
  1916. and respects the forgetful functors into {\_\Set}, 
  1917. i.~e., $V_{\Bc}\circ i=V_{\%B}$
  1918. \item
  1919. $\:1$ is a terminal object in $\Bc$.
  1920. \item
  1921. $\:2$ is a schedule of $\Bc$ having two events $v$ and $w$, with $\delta_{\:1}(u,u)=\delta_{\:2}(v,v)$,
  1922. $\delta_{\:2}(w,v)$ initial, $\delta_{\:2}(v,w)$ terminal.
  1923. \end{itemize}
  1924. \end{definition}
  1925. \begin{definition}
  1926. Given a prefix classifier $k$ for a category of schedules \%B, 
  1927. a morphism $\:p\to\:p'$ is a {\em prefix morphism} (or {\em prefix map})
  1928. iff there exists a morphism $\chi:\:p'\to\:2$ such that
  1929. $$\begin{diagram}
  1930. \:p & \rInto & \:p'\\
  1931. \dTo^! && \dTo_{\chi}\\
  1932. \:1 & \rTo^k & \:2\\
  1933. \end{diagram}
  1934. is a pullback.
  1935. A {\em proper} prefix is one for which the inclusion $\:p\to\:p'$ is not an isomorphism.
  1936. \end{definition}
  1937. For preorders {\_2\hCat}, the only choice for \:2 is the usual ordinal, 
  1938. and $k:1\to 2$ is the inclusion of the lower element.  This definition
  1939. of prefix then yields the usual notion of prefix for a preorder
  1940. ($x$ in the prefix and $y\le x$ imply $y$ in the prefix).
  1941. \begin{theorem}\label{th:pos}
  1942. Given a schedule category of the form $\%B=\%D\hPhys$ 
  1943. having a prefix classifier $k:\:1\to\:2$,
  1944. and a $J$-diagram $(\:f_m:\:p_i\to \:p_j\mathrel)_{(m:i\to j)\in J}$ 
  1945. with colimit $(\iota_i:\:p_i\to \:p)_{i\in J}$, and a morphism
  1946. $\chi:\:p\to\:2$ or equivalently, a compatible collection
  1947. of morphisms $\chi_i: \:p_i\to \:2$ (here, $\chi_i=\chi\iota_i$), 
  1948. we have that the diagram
  1949. $(\:g_m:\:q_i\to \:q_j \mathrel{|} m:i\to j\;{\in J})$,
  1950. in which $\:q_i$ is the $\chi_i$-prefix of $\:p_i$ and the $\:g_i$ are the
  1951. canonical maps, has the colimit $(\:q,\kappa_i: \:q_i\to \:q)$, where $\:q$ is
  1952. the $\chi$-prefix of $\:p$. 
  1953. \end{theorem}
  1954. \noindent
  1955. In other words, the colimit of a diagram of prefixes is a prefix of the colimit.
  1956. Having fixed a particular prefix classifier in the schedule category $\%B$ 
  1957. we can then consider the following class of processes:
  1958. \begin{definition}
  1959. A process $P$ is {\em prefix ordered} iff
  1960. \begin{itemize}
  1961. \item
  1962. $A_P$ is a preorder
  1963. \item
  1964. For all $p,p'\in A_P$: $p\le p'$ implies $P_{pp'}:P(p)\to P(p')$ is a prefix morphism.
  1965. \end{itemize}
  1966. A process morphism $f:P\to Q$ is {\em prefix preserving} iff for each $p\le p'$ in $A_P$, the naturality-of-$f_p$ diagram
  1967. $$\commdiag
  1968. {QA_f(p)&\rTo{f_p}{}&P(p)\cr
  1969. \dIntoA{}{}&&\dIntoA{}{}\cr
  1970. QA_f(p')&\rTo{f_{p'}}{}&P(p')\cr
  1971. is a pullback in ${\%B}$.
  1972. \end{definition}
  1973. The significance of the pullback requirement for prefix-preserving morphisms is that it eliminates the possibility of an event appearing in an ``early'' alternative of $P$ without appearing in the corresponding ``early'' alternative of $Q$.
  1974. That is, processes joined by a morphism should agree on the causal precedence of events that they have in common.
  1975. Prefix ordered processes and prefix preserving morphisms form a category which we will denote (\PROCK{\%B}).
  1976. \subsubsection{Branching Time}
  1977. The next observation is that prefix ordered processes allow for the presence of ``useless'' alternatives.
  1978. \begin{definition}
  1979. Given a schedule category {\%B} having an initial object $0$ and satisfying the condition
  1980. $$s\in\ob(\%B)\hbox{there exists some morphism $s\to 0$}\implies\hbox{$s$ is initial in \%B}$$
  1981. a {\em branch\-ing-time} process over \%B is a prefix ordered process $P$ for which
  1982. \begin{itemize}
  1983. \item
  1984. $P(p)=0$ implies $p$ initial in $A_P$
  1985. \item
  1986. $p\le p'\in A_P$ implies that either $p=p'$ or the corresponding prefix map
  1987. $P(p)\hookrightarrow P(p')$ is proper.
  1988. \end{itemize}
  1989. \PROCB{\%B} denotes the full subcategory of \PROCK{\%B} consisting of branch\-ing-time processes.
  1990. \end{definition}
  1991. The intuitive content here is that in any ordered sequence of alternatives, each successive schedule should ``make progress'' in the sense of each one having additional events not present in its predecessor.  
  1992. One might wish also to merge {\em every} pair of isomorphic schedules within a process, no matter how they are arrived at, thus requiring processes to be actual sets rather than the multisets thus far described.
  1993. Unfortunately, for some choices of schedule category \%B, it is possible for a pair of schedules to be isomorphic without being {\em canonically} isomorphic.  
  1994. Without further stipulations on the structure of a process,
  1995. the only case where such a canonical isomorphism is available is that of the initial schedule, $0$, 
  1996. so we can at least merge any initial alternatives that might exist (as we do above).
  1997. The lack of canonical isomorphisms in general would defeat the construction of process limits
  1998. as we shall discuss when we present that construction.
  1999. The condition imposed on \%B is true of all of the examples we have seen thus far 
  2000. (\%D\hCat, \%D\hPhys, $(\%D\hCat\comma\_\Set)$, $(\%D\hPhys\comma\_\Set)$, etc\dots).
  2001. The conditions on a branch\-ing-time process $P$ together imply that 
  2002. \begin{itemize}
  2003. \item
  2004. there is at most one object in $A_P$, which we will call $\bot$ if it exists, for which $P(\bot)=0$.
  2005. \item
  2006. $A_P$ is a partial order, for the second condition above enforces the antisymmetry axiom.
  2007. \end{itemize}
  2008. Finally, note that morphisms
  2009. $f:P\to Q$ between such processes will automatically be strict,
  2010. that is, $A_f(\bot_P)=\bot_Q$.
  2011. \subsubsection{Closure}
  2012. For some applications, it will be necessary to be able to infer a particular infinite schedule from the corresponding sequence of finite schedules that have it as a limit.  
  2013. The stipulations for the various types of process presented thus far do not require such infinite schedules to ever exist.
  2014. \begin{definition}
  2015. Given a category \%B (of schedules) having all filtered colimits, 
  2016. a branch\-ing-time process $P$ over \%B is {\em closed} iff for any directed subset $S$ of $A_P$,
  2017. there exists a least upper bound $\bigvee S$ in $A_P$ satisfying $P(\bigvee S)=\colim_{s\in S}P(s)$.
  2018. A morphism between closed processes $f:P\to Q$ is {\em continuous} iff
  2019. $A_f$ is continuous, i.~e., preserves joins of directed subsets.
  2020. We denote the category of closed branch\-ing-time processes and continuous morphisms as \PROCBC{\%B}.
  2021. \end{definition}
  2022. Because of the naturality of $f:QA_f\nato P$, we have that for any directed set $S$ in $A_P$, the map
  2023. $$f_{\bigvee S}:QA_f(\bigvee S)=\colim_{s\in S} QA_f(s) \to \colim_{s\in S}P(s)$$
  2024. is necessarily the usual canonical one.
  2025. Here, the word ``closed'' is being used in its topological sense, that of a closed set containing its limit points, rather than the categorical sense, that of possessing a right adjoint to the tensor product.  The latter sense would be meaningless here, given that we do not even view a process $P$ as a category, let alone have a definition of tensor product on $P$.
  2026. \subsubsection{Labels}
  2027. If we are considering processes over a category of labeled schedules (e.~g., $\%B=(\%D\hCat\comma\_\Set)$),
  2028. we have to contend with the orthogonal issue of the alphabet from which the process draws its labels.
  2029. One generally expects that all of the constituent schedules of a given process will be over the same alphabet.
  2030. While this can be dealt with simply by taking \%B to be $\%B_{\^S}$, a category of labeled schedules over a single alphabet \^S, this does not allow for morphisms between processes over distinct alphabets as will often arise in the course of composing processes, i.~e., one should not be compelled to specify a full system alphabet in advance.
  2031. \begin{definition}
  2032. Given a category of labeled schedules $\%B$, i.~e., with a projection $\sigma:\%B\to\Set$, 
  2033. a process over $\%B$ is {\em alphabetically coherent} if it is also a process over $\%B_{\Sigma}$ for some alphabet $\Sigma$.
  2034. Given alphabetically coherent processes $P$ over $\%B_{\Sigma}$ and $Q$ over $\%B_{\Gamma}$,
  2035. a process morphism (in \PROC{B}) $f:P\to Q$ is likewise {\em alphabetically coherent} if there
  2036. exists a translation $t:\Gamma\to\Sigma$ such that, for all $p\in A_P$, 
  2037. $\sigma(f_p:QA_f(p)\to P(p))=t$.
  2038. \CPROC{\%B} denotes the subcategory of \PROC{\%B} consisting of alphabetically coherent processes and process morphisms.
  2039. \end{definition}
  2040. As noted, this question of alphabetical coherence is orthogonal to the question of the particular alternative-set structure we wish to use.  
  2041. One may thus consider corresponding categories of alphabetically coherent processes, namely the categories of discrete, prefix ordered, branch\-ing-time or closed branch\-ing-time such processes, respectively ${\cal P}^{\bullet}_d[\%B]$, ${\cal P}^{\bullet}_k[\%B]$, ${\cal P}^{\bullet}_{k\bot}[\%B]$, and \CPROCBC{\%B}.
  2042. \section{Properties}
  2043. \subsection{Pointwise Lifting of Schedule Functors}
  2044. {\em Pointwise lifting} refers to the notion of taking a unary schedule operation and applying it uniformly to all of the constituent schedules of a given process.  
  2045. We need to establish what we mean by ``uniformly'' and present sufficient conditions on the schedule operation so that such a lifting will be possible.
  2046. Essentially, if we are given a functor $F:\%B\to\%B'$ between two categories of schedules, 
  2047. we can apply this functor to all of the constituent schedules of a given process over $\%B$ 
  2048. to yield a corresponding process over $\%B'$.
  2049. \begin{definition}
  2050. Given a functor $F:\%B\to\%B'$, the {\em lifted} functor $F_{\#}:\PROC{\%B}\to\PROC{\%B'}$ 
  2051. is defined as follows:  For any process $P\in\PROC{\%B}$,
  2052. $F_{\#}P$ is given by $A_{F_{\#}P}=A_P$ (i.~e., same index set)
  2053. and $F_{\#}P(:A_P\to\%B')=FP$.  For any morphism $f:P\to Q$,
  2054. $F_{\#}f$ is given by $A_{F_{\#}f}=A_f$ (i.~e., same index function)
  2055. and $(F_{\#}f)_p (:FQA_f(p)\to FP(p))=Ff_p$.
  2056. \end{definition}
  2057. \nopagebreak
  2058. \noindent
  2059. Functoriality of $F_{\#}$ follows almost immediately from functoriality of $F$.
  2060. Similarly, natural transformations lift as well.
  2061. \nopagebreak
  2062. \begin{definition}
  2063. Given a natural transformation $\^h:F\nato G:\%B\to\%B'$, the {\em lifted} 
  2064. natural transformation $\^h_{\#}:G_{\#}\nato F_{\#}:\PROC{\%B}\to\PROC{\%B'}$ is defined 
  2065. by specifying the morphisms $\^h_{\#P}:G_{\#}P\to F_{\#}P$ as follows
  2066. \begin{itemize}
  2067. \item
  2068. $A_{\^h_{\#P}}=1_{A_P}$, recalling that $A_P=A_{G_{\#}P}=A_{F_{\#}P}$.
  2069. \item
  2070. $(\^h_{\#P})_p = \^h_{P(p)}$
  2071. \end{itemize}
  2072. \end{definition}
  2073. As one might expect, naturality of $\^h_{\#}$ follows almost immediately from naturality of $\^h$.  Applying this lifting to the unit and counit transformations of an adjunction, we get
  2074. \begin{proposition}\label{prop:liftadj}
  2075. If $F:\%B\to\%B'$ is the left (right) adjoint of $G:\%B'\to\%B$, then $F_{\#}:\PROC{\%B}\to\PROC{\%B'}$ is the right (left) adjoint of $G_{\#}:\PROC{\%B'}\to\PROC{\%B}$.
  2076. \end{proposition}
  2077. \begin{proofo}
  2078. If $F$ is the left adjoint of $G$, 
  2079. we have unit $\^h:1_{\%B}\nato GF$ and counit $\^e:FG\nato 1_{\%B'}$ 
  2080. natural transformations satisfying the usual triangular identities 
  2081. \begin{eqnarray*}
  2082. \^e_{F\:X}\circ F\^h_{\:X}&=&1_{F\:X}\\
  2083. G\^e_{\:Y}\circ\^n_{G\:Y}&=&1_{G\:Y}\\
  2084. \end{eqnarray*}
  2085. These transformations lift to $\^h_{\#}:(GF)_{\#}\nato 1_{\PROC{\%B}}$ and $\^e_{\#}:1_{\PROC{\%B'}}\nato (FG)_{\#}$.  Noting that $((GF)_{\#}=G_{\#}F_{\#})$ and $((FG)_{\#}=F_{\#}G_{\#})$, the triangular identities can likewise be shown to lift as well to
  2086. \begin{eqnarray*}
  2087. F_{\#}\^h_{\#X}\circ\^e_{\#F_{\#}X}&=&1_{F_{\#}X}\\
  2088. \^n_{\#G_{\#}Y}\circ G_{\#}\^e_{\#Y}&=&1_{G_{\#}Y}\\
  2089. \end{eqnarray*}
  2090. which suffices to demonstrate that $F_{\#}$ is a right adjoint of $G_{\#}$ with
  2091. $\^e_{\#}$ and $\^h_{\#}$ being the unit and counit, respectively.
  2092. \end{proofo}
  2093. In particular, for the case of \%B being a category of labeled schedules and for a given 
  2094. alphabet translation $t:\Gamma\to\Sigma$, 
  2095. we recall the corresponding translation and restriction schedule functors
  2096. $t_*:\%B_{\Gamma}\to\%B_{\Sigma}$ and $t^*:\%B_{\Sigma}\to\%B_{\Gamma}$.
  2097. We can then lift these to process functors
  2098. $t_{\#}:\PROC{\%B_{\Gamma}}\to\PROC{\%B_{\Sigma}}$ and
  2099. $t^{\#}:\PROC{\%B_{\Sigma}}\to\PROC{\%B_{\Gamma}}$ in the above manner.
  2100. As a matter of simplifying the notation, it is understood that $t_{\#}$ and $t^{\#}$ are abbreviations for 
  2101. $t_{*\#}$ and $t^*_{\#}$ respectively.
  2102. Given the adjunction $t_*\dashv t^*$, we can then infer a corresponding adjunction $t^{\#}\dashv t_{\#}$
  2103. from Proposition \ref{prop:liftadj}.
  2104. In the subcategory of prefix ordered processes, we need additional conditions on the supplied functor 
  2105. $F:\%B\to\%B'$ in order that the resulting lifted functor $F_{\#}:\PROCK{\%B}\to\PROCK{\%B'}$ indeed maps into \PROCK{\%B'}, i.~e., that the constructions for $F_{\#}P$ and $F_{\#}f$ indeed produce a prefix ordered process and a prefix preserving morphism when given prefix ordered $P$ and prefix preserving $f$.
  2106. The following set of conditions is sufficient to guarantee this:
  2107. \begin{itemize}
  2108. \item
  2109. $F$ preserves pullbacks.
  2110. \nobreak
  2111. \item
  2112. \nobreak
  2113. If $k:1\to 2$ is the prefix classifier for \%B, then $Fk:F1\to F2$ is a prefix in $\%B'$.
  2114. \end{itemize}
  2115. Likewise, a natural transformation $\^h:F\nato G:\%B\to\%B'$ of schedule functors will only lift if 
  2116. its naturality diagram
  2117. $$\commdiag
  2118. {Fs&\rTo{\^h_s}{}&Gs\cr
  2119. \dIntoA{}{}&&\dIntoA{}{}\cr
  2120. Fs'&\rTo{\^h_{s'}}{}&Gs'\cr
  2121. is a pullback in the case where the $s\to s'$ morphism is a prefix.
  2122. This is required in order for $\^h_{\#P}$ to actually be a prefix preserving morphism for any $P\in\PROCK{\%B}$.
  2123. Sufficient conditions to guarantee this are the aforementioned conditions on $F$ 
  2124. together with the condition that
  2125. $$\commdiag
  2126. {F1&\rTo{\^h_s}{}&G1\cr
  2127. \dIntoA{Fk}{}&&\dIntoA{}{Gk}\cr
  2128. F2&\rTo{\^h_{s'}}{}&G2\cr
  2129. be a pullback.
  2130. In the case of branch\-ing-time processes, 
  2131. though we don't need any additional conditions on $F$ beyond that for the prefix ordered case,
  2132. there is more to do to lift a functor $F:\%B\to\%B'$ 
  2133. to a corresponding {\em induced} functor $F_{\#\bot}:\PROCB{\%B}\to\PROCB{\%B'}$.
  2134. For any process $P\in\PROCB{\%B}$, we can construct an equivalence relation $R$ on $A_P$ 
  2135. generated by the set of all pairs $(p,p')$ in $A_P$ for which 
  2136. \begin{itemize}
  2137. \item
  2138. $p\le p'$ and $FP(p\to p')$ is an isomorphism, or
  2139. \item
  2140. $FP(p)$ and $FP(p')$ are both initial.  
  2141. \end{itemize}
  2142. Then the lifted {\em branching time} process, which we shall also denote $F_{\#}P$,
  2143. is then a process whose alternatives are given by the quotient category $A_P/R$.
  2144. We then take a representative $p$ of each $R$-equivalence class
  2145. $[p]$ and have $F_{\#}P:A_P/R\to\%B$ be the functor taking $[p]$ to $FP(p)$.  
  2146. This construction is not canonical, since for any particular equivalence class of alternatives, 
  2147. there may be a variety of choices for p, though the functoriality of $P:A_P\to\%B$ 
  2148. guarantees a canonical isomorphism between any pair of such choices.  
  2149. Thus, all of the possible $F_{\#}P$'s we can construct will themselves be canonically isomorphic.
  2150. For any morphism $f:P\to Q$, showing that there exists a well-defined morphism
  2151. $F_{\#}f:F_{\#}P\to F_{\#}Q$ 
  2152. is a matter of showing that $A_f$ maps $R$-equivalent alternatives of $A_P$ to equivalent alternatives of $A_Q$.
  2153. We have already noted that $A_f$ is strict which handles the case of alternatives equivalent by virtue of being initial.  
  2154. The case of noninitial $p\le p'$ and $FP(p\to p')$ being an isomorphism, is covered by $F$ preserving prefixes and prefix pullbacks, i.~e., the pullback in the naturality of $f$ diagram is preserved, thus guaranteeing that 
  2155. $FQ(A_fp\to A_fp')$ is also an isomorphism.
  2156. Lifting a natural transformation $\^h:F\nato G$, is similarly complicated 
  2157. but likewise involves no additional stipulations.
  2158. In the general prefix ordered case, we could rely on $A_P=A_{G_{\#}P}=A_{F_{\#}P}$, 
  2159. and thus have $A_{\^h_{\#P}}$ be the identity.  
  2160. In the branching time case, various alternatives of $A_{F_{\#}P}$ and $A_{G_{\#}P}$ 
  2161. will be identified in which case we need to ensure that we can still define the map $A_{\^h_{\#P}}:A_{G_{\#}P}\to A_{F_{\#}P}$.  
  2162. The essential observation is that if two alternatives $p$ and $p'$ of $A_P$ are identified in $A_{G_{\#}P}$,
  2163. this happens in one of the following two ways:
  2164. \begin{itemize}
  2165. \item
  2166. $GPp$ and $GPp'$ are both initial, in which case $FPp$ and $FPp'$ have to be as well, 
  2167. \item
  2168. $p\le p$ and $GPp\hookrightarrow GPp'$ is an isomorphism, but then, since
  2169. $$\commdiag
  2170. {FPp&\rTo{\^h_{Pp}}{}&GPp\cr
  2171. \dIntoA{}{}&&\dIntoA{}{}\cr
  2172. FPp'&\rTo{\^h_{Pp'}}{}&GPp'\cr
  2173. is a pullback, we have $FPp\hookrightarrow FPp'$ being an isomorphism as well.
  2174. \end{itemize}
  2175. In each case, it is seen that the offending alternatives must also be identified in $A_{F_\#P}$.
  2176. Therefore the identity on $A_P$ factors through the quotient to yield the desired alternative-set map
  2177. $A_{\^h_{\#P}}:(A_P/R_G=A_{G_{\#}P})\to (A_P/R_F=A_{F_{\#}P})$
  2178. In the case of closed branch\-ing-time processes $F$ lifts as for branch\-ing-time processes.
  2179. Hence, we need only that $F$ preserves filtered colimits to ensure that the $F_{\#}(P)$ will be closed.
  2180. \subsection{Process Limits and Coproducts}
  2181. We now turn to the question of limits and colimits in the process category, starting with a result about the general process category \PROC{\%B}.
  2182. As a preliminary observation, notice that there is a forgetful functor $A:\PROC{\%B}\to\_\Cat$ that discards the schedule information, 
  2183. i.~e., takes a process $P$ to its alternative set (category, actually) $A_P$ and a morphism $f:P\to Q$ likewise to its alternative set map $A_f:A_P\to A_Q$.
  2184. \begin{lemma}\label{lem:aladj}
  2185. If \%B has a terminal object, $A:\PROC{\%B}\to\_\Cat$ has a left adjoint.
  2186. \end{lemma}
  2187. \begin{proof}
  2188. Define $L:\_\Cat\to\PROC{\%B}$ as follows:
  2189. For any category $C$, the process $L_C$ is that whose alternative category $A_{L_C}$ is $C$ and whose schedules are all terminal, 
  2190. i.~e., $L_Cc=1_{\%B}$ for all $c\in\ob(C)$ with morphisms of $C$ going to the canonical terminal schedule maps.
  2191. That this is a left adjoint is shown by exhibiting, for any $C\in\_\Cat$, 
  2192. a universal arrow $C\to A_{L_C}(=C)$ which we take to be the identity.
  2193. For any process $P\in\PROC{\%B}$ and any functor $f:C\to A_P$, 
  2194. we take $g:L_C\to P$ to be such that $A_g=f$ and such that the associated schedule maps $g_c:Pfc\to L_Cc(=1)$ be the terminal map.  
  2195. Clearly, $g$ is the only morphism for which $A_g\circ 1_C=f$.
  2196. \end{proof}
  2197. From this, we learn that the $A$ functor preserves limits,
  2198. i.~e., the alternative category of a limit of processes will necessarily
  2199. be the limit of the corresponding alternative categories in \_\Cat.
  2200. \begin{theorem}\label{thm:plim}
  2201. For any category $\%B$ having all colimits of type $J^{op}$,
  2202. \PROC{\%B} has all limits of type $J$.
  2203. \end{theorem}
  2204. \begin{proof}
  2205. \mathcode`\|="326A
  2206. \mathcode`\;="303B
  2207. \mathcode`\:="603A
  2208. Consider a diagram $J$ in $\PROC{\%B}$ with processes
  2209. $(P^i| i\in J)$ and morphisms
  2210. $(f^m:P^i\to P^j|m:i\to j\in J)$.
  2211. Just to provide names we will denote the limit as
  2212. $(P; \pi^i:P\to P^i | i \in J)$ (that is, $P$ is the object and the
  2213. $\pi^i$'s are the projections).
  2214. \setlength{\unitlength}{0.0088in}
  2215. \begin{picture}(263,186)(-115,635)
  2216. \thicklines
  2217. \put(285,780){\vector( 4, 1){0}}
  2218. \multiput( 85,730)(13.33333,3.33333){15}{\makebox(0.6333,0.9500){\tenrm .}}
  2219. \put(285,680){\vector( 4,-1){0}}
  2220. \multiput( 85,730)(13.33333,-3.33333){15}{\makebox(0.6333,0.9500){\tenrm .}}
  2221. \put(195,785){\vector( 2, 1){0}}
  2222. \multiput( 85,730)(12.22222,6.11111){9}{\makebox(0.6333,0.9500){\tenrm .}}
  2223. \put(195,675){\vector( 2,-1){0}}
  2224. \multiput( 85,730)(12.22222,-6.11111){9}{\makebox(0.6333,0.9500){\tenrm .}}
  2225. \put(235,790){\vector( 1, 0){ 70}}
  2226. \put(235,670){\vector( 1, 0){ 70}}
  2227. \put(225,775){\vector( 1,-1){ 80}}
  2228. \put(195,745){\makebox(0,0)[lb]{\raisebox{0pt}[0pt][0pt]{$\pi^3$}}}
  2229. \put(110,765){\makebox(0,0)[lb]{\raisebox{0pt}[0pt][0pt]{$\pi^1$}}}
  2230. \put(115,685){\makebox(0,0)[lb]{\raisebox{0pt}[0pt][0pt]{$\pi^2$}}}
  2231. \put(195,710){\makebox(0,0)[lb]{\raisebox{0pt}[0pt][0pt]{$\pi^4$}}}
  2232. \put(260,645){\makebox(0,0)[lb]{\raisebox{0pt}[0pt][0pt]{$f^{III}$}}}
  2233. \put(275,735){\makebox(0,0)[lb]{\raisebox{0pt}[0pt][0pt]{$f^{II}$}}}
  2234. \put(265,800){\makebox(0,0)[lb]{\raisebox{0pt}[0pt][0pt]{$f^{I}$}}}
  2235. \put( 65,725){\makebox(0,0)[lb]{\raisebox{0pt}[0pt][0pt]{$P$}}}
  2236. \put(205,785){\makebox(0,0)[lb]{\raisebox{0pt}[0pt][0pt]{$P^1$}}}
  2237. \put(205,665){\makebox(0,0)[lb]{\raisebox{0pt}[0pt][0pt]{$P^2$}}}
  2238. \put(315,785){\makebox(0,0)[lb]{\raisebox{0pt}[0pt][0pt]{$P^3$}}}
  2239. \put(320,665){\makebox(0,0)[lb]{\raisebox{0pt}[0pt][0pt]{$P^4$}}}
  2240. \end{picture}
  2241. \noindent
  2242. From the lemma, we know that the alternative category $A_P$ of the limit
  2243. is obtained by taking the limit of the diagram $(A_{P^i};A_{f^m})$ in $\_\Cat$.
  2244. This limit in {\_\Cat} also gives us a collection of projections which we can use for the alternative portion ($A_{\pi^i}:A_P\to A_{P^i}$) of the morphisms $\pi^i$.
  2245. As a consequence of the construction of limits in \_\Cat,
  2246. a typical object $p$ of $A_P$ will be a cone 
  2247. $(p_i:\{\bullet\}\to A_{P^i} | i\in J)$, 
  2248. or equivalently, a collection of objects $(p_i\in A_{P^i})_{i\in J}$ 
  2249. such that $p_j=A_{f^m}p_i$ for all $m:i\to j$ in $J$.
  2250. \setlength{\unitlength}{0.0088in}
  2251. \begin{picture}(366,250)(-100,621)
  2252. \thicklines
  2253. \put(320,775){\circle{50}}
  2254. \put(325,660){\circle{58}}
  2255. \put(185,670){\circle{50}}
  2256. \put(210,810){\circle{58}}
  2257. \put( 70,730){\circle{60}}
  2258. \thinlines
  2259. \put(321,789){\vector( 4, 1){0}}
  2260. \multiput( 85,730)(13.33333,3.33333){18}{\makebox(0.6333,0.9500){\tenrm .}}
  2261. \put(321,671){\vector( 4,-1){0}}
  2262. \multiput( 85,730)(13.33333,-3.33333){18}{\makebox(0.6333,0.9500){\tenrm .}}
  2263. \put(201,788){\vector( 2, 1){0}}
  2264. \multiput( 85,730)(12.00000,6.00000){10}{\makebox(0.6333,0.9500){\tenrm .}}
  2265. \put(201,672){\vector( 2,-1){0}}
  2266. \multiput( 85,730)(12.00000,-6.00000){10}{\makebox(0.6333,0.9500){\tenrm .}}
  2267. \put(210,790){\vector( 1, 0){110}}
  2268. \put(205,670){\vector( 1, 0){115}}
  2269. \put(210,790){\vector( 1,-1){115}}
  2270. \put( 80,730){\circle*{5}}
  2271. \put(205,790){\circle*{5}}
  2272. \put(200,670){\circle*{5}}
  2273. \put(320,790){\circle*{5}}
  2274. \put(325,670){\circle*{5}}
  2275. \put(260,800){\makebox(0,0)[lb]{\raisebox{0pt}[0pt][0pt]{$A_{f^I}$}}}
  2276. \put(225,730){\makebox(0,0)[lb]{\raisebox{0pt}[0pt][0pt]{$A_{f^{II}}$}}}
  2277. \put(245,650){\makebox(0,0)[lb]{\raisebox{0pt}[0pt][0pt]{$A_{f^{III}}$}}}
  2278. \put(145,805){\makebox(0,0)[lb]{\raisebox{0pt}[0pt][0pt]{$A_{P^1}$}}}
  2279. \put(125,660){\makebox(0,0)[lb]{\raisebox{0pt}[0pt][0pt]{$A_{P^2}$}}}
  2280. \put(350,770){\makebox(0,0)[lb]{\raisebox{0pt}[0pt][0pt]{$A_{P^3}$}}}
  2281. \put(355,650){\makebox(0,0)[lb]{\raisebox{0pt}[0pt][0pt]{$A_{P^4}$}}}
  2282. \put( 15,725){\makebox(0,0)[lb]{\raisebox{0pt}[0pt][0pt]{$A_P$}}}
  2283. \put( 70,715){\makebox(0,0)[lb]{\raisebox{0pt}[0pt][0pt]{$p$}}}
  2284. \put(205,800){\makebox(0,0)[lb]{\raisebox{0pt}[0pt][0pt]{$p_1$}}}
  2285. \put(175,660){\makebox(0,0)[lb]{\raisebox{0pt}[0pt][0pt]{$p_2$}}}
  2286. \put(315,770){\makebox(0,0)[lb]{\raisebox{0pt}[0pt][0pt]{$p_3$}}}
  2287. \put(325,655){\makebox(0,0)[lb]{\raisebox{0pt}[0pt][0pt]{$p_4$}}}
  2288. \end{picture}
  2289. There will then be, for any such $p$, a corresponding collection of objects 
  2290. $P^ip_i$ in {\%B} and morphisms $f^m_{p_i}:P^jA_{f^m}p_i(=P^jp_j)\to P^ip_i$ for all $m:i\to j$ in $J$.
  2291. This latter collection is, in fact, a diagram of type
  2292. $J^{op}$ in $\%B$, which, by hypothesis, has a colimit 
  2293. $(Pp; \pi^i_p:P^ip_i\to Pp)$.  
  2294. This provides the object map for the functor $P$ as well as the
  2295. definition for the natural transformation $\pi^i:P^iA_{\pi^i}\nato P$.
  2296. \setlength{\unitlength}{0.0088in}
  2297. \begin{picture}(366,450)(0,421)
  2298. \thicklines
  2299. \put(320,775){\circle{50}}
  2300. \put(325,660){\circle{58}}
  2301. \put(185,670){\circle{50}}
  2302. \put(210,810){\circle{58}}
  2303. \put( 70,730){\circle{60}}
  2304. \thinlines
  2305. \put(321,789){\vector( 4, 1){0}}
  2306. \multiput( 85,730)(13.33333,3.33333){18}{\makebox(0.6333,0.9500){\tenrm .}}
  2307. \put(321,671){\vector( 4,-1){0}}
  2308. \multiput( 85,730)(13.33333,-3.33333){18}{\makebox(0.6333,0.9500){\tenrm .}}
  2309. \put(201,788){\vector( 2, 1){0}}
  2310. \multiput( 85,730)(12.00000,6.00000){10}{\makebox(0.6333,0.9500){\tenrm .}}
  2311. \put(201,672){\vector( 2,-1){0}}
  2312. \multiput( 85,730)(12.00000,-6.00000){10}{\makebox(0.6333,0.9500){\tenrm .}}
  2313. \put(210,790){\vector( 1, 0){110}}
  2314. \put(205,670){\vector( 1, 0){115}}
  2315. \put(210,790){\vector( 1,-1){115}}
  2316. \put( 80,730){\circle*{5}}
  2317. \put(210,790){\circle*{5}}
  2318. \put(205,670){\circle*{5}}
  2319. \put(325,790){\circle*{5}}
  2320. \put(325,670){\circle*{5}}
  2321. \put(145,805){\makebox(0,0)[lb]{\raisebox{0pt}[0pt][0pt]{$A_{P^1}$}}}
  2322. \put(125,660){\makebox(0,0)[lb]{\raisebox{0pt}[0pt][0pt]{$A_{P^2}$}}}
  2323. \put(350,770){\makebox(0,0)[lb]{\raisebox{0pt}[0pt][0pt]{$A_{P^3}$}}}
  2324. \put(355,650){\makebox(0,0)[lb]{\raisebox{0pt}[0pt][0pt]{$A_{P^4}$}}}
  2325. \put( 15,725){\makebox(0,0)[lb]{\raisebox{0pt}[0pt][0pt]{$A_P$}}}
  2326. \put( 70,715){\makebox(0,0)[lb]{\raisebox{0pt}[0pt][0pt]{$p$}}}
  2327. \put(205,800){\makebox(0,0)[lb]{\raisebox{0pt}[0pt][0pt]{$p_1$}}}
  2328. \put(175,660){\makebox(0,0)[lb]{\raisebox{0pt}[0pt][0pt]{$p_2$}}}
  2329. \put(315,770){\makebox(0,0)[lb]{\raisebox{0pt}[0pt][0pt]{$p_3$}}}
  2330. \put(325,655){\makebox(0,0)[lb]{\raisebox{0pt}[0pt][0pt]{$p_4$}}}
  2331. \thinlines
  2332. \put(210,790){\vector( 1, -4){45}}
  2333. \put(205,670){\vector( 1, -4){45}}
  2334. \put(325,790){\vector( 1, -4){45}}
  2335. \put(325,670){\vector( 1, -4){45}}
  2336. \thicklines
  2337. \put(167,538){\vector(-4,-1){0}}
  2338. \multiput(175,540)(13.33333,3.33333){14}{\makebox(0.6333,0.9500){\tenrm .}}
  2339. \put(167,522){\vector(-4, 1){0}}
  2340. \multiput(175,520)(13.33333,-3.33333){14}{\makebox(0.6333,0.9500){\tenrm .}}
  2341. \put(151,538){\vector(-2,-1){0}}
  2342. \multiput(159,542)(12.00000,6.00000){8}{\makebox(0.6333,0.9500){\tenrm .}}
  2343. \put(151,522){\vector(-2, 1){0}}
  2344. \multiput(159,518)(12.00000,-6.00000){8}{\makebox(0.6333,0.9500){\tenrm .}}
  2345. \put(360,590){\vector(-1, 0){70}}
  2346. \put(360,470){\vector(-1, 0){75}}
  2347. \put(365,485){\vector(-1, 1){90}}
  2348. \put(310,602){\makebox(0,0)[lb]{\raisebox{0pt}[0pt][0pt]{$f^I_{p_1}$}}}
  2349. \put(275,530){\makebox(0,0)[lb]{\raisebox{0pt}[0pt][0pt]{$f^{II}_{p_1}$}}}
  2350. \put(305,450){\makebox(0,0)[lb]{\raisebox{0pt}[0pt][0pt]{$f^{III}_{p_2}$}}}
  2351. \put(120,525){\makebox(0,0)[lb]{\raisebox{0pt}[0pt][0pt]{$Pp$}}}
  2352. \put(245,585){\makebox(0,0)[lb]{\raisebox{0pt}[0pt][0pt]{$P^1p_1$}}}
  2353. \put(365,585){\makebox(0,0)[lb]{\raisebox{0pt}[0pt][0pt]{$P^2p_2$}}}
  2354. \put(245,465){\makebox(0,0)[lb]{\raisebox{0pt}[0pt][0pt]{$P^3p_3$}}}
  2355. \put(365,465){\makebox(0,0)[lb]{\raisebox{0pt}[0pt][0pt]{$P^4p_4$}}}
  2356. \put(180,565){\makebox(0,0)[lb]{\raisebox{0pt}[0pt][0pt]{$\^p^1_p$}}}
  2357. \put(180,495){\makebox(0,0)[lb]{\raisebox{0pt}[0pt][0pt]{$\^p^3_p$}}}
  2358. \end{picture}
  2359. To get the action of $P$ on morphisms, recall that a morphism
  2360. $s:p\to p'$ in $A_P$ will be a collection of maps
  2361. $s_i:p_i\to p'_i$ in $A_{P^i}$ such that 
  2362. $s_j=A_{f^m}s_i$ for all $m:i\to j$ in $J$.
  2363. As with objects, we can consider the associated collection of
  2364. morphisms $P^is_i:P^ip_i\to P^ip'_i$ in $\%B$.  
  2365. These constitute a natural transformation
  2366. between the $J^{op}$-diagrams associated with $p$ and $p'$,
  2367. since 
  2368. $$\commdiag
  2369. {P^jp_j=P^jA_{f^m}p_i&\rTo{f^m_{p_i}}{}&P^ip_i\cr
  2370. \dTo{P^js_j}{=P^jA_{f^m}s_i}&&\dTo{}{P^is_i}\cr
  2371. P^jp'_j=P^jA_{f^m}p'_i&\rTo{f^m_{p'_i}}{}&P^ip'_i\cr
  2372. commutes by naturality of $f^m$.
  2373. Given any such transformation between the diagrams,
  2374. there is a corresponding unique (canonical) morphism between the
  2375. colimits $Ps:Pp\to Pp'$ making everything commute. 
  2376. The reader may verify that $\pi^i:P^iA_{\pi^i}\nato P$ 
  2377. is a natural transformation.
  2378. Given some other cone $(Q; \^t^i:Q\to P^i | i \in J)$, 
  2379. we now need to exhibit a unique morphism $\^x:Q\to P$ factoring this through the limit cone.
  2380. We note that the limithood of $(A_P; A_{\pi^i}:A_P\to A_{P^i} | i \in J)$ in $\_\Cat$ provides us with a unique map $A_{\^x}:A_Q\to A_P$ in \_\Cat.
  2381. Then, for every alternative $q\in A_Q$, 
  2382. there is a collection of alternatives $(q_i=A_\^t^iq\in P^i)_{i\in J}$ 
  2383. and then a corresponding schedule diagram with
  2384. objects $(P^iq_i)_{i\in J}$ and morphisms 
  2385. $f^m_{q_i}:P^jq_j\to P^iq_i$ for all $m:i\to j$ in $J$.
  2386. \setlength{\unitlength}{0.0088in}
  2387. \begin{picture}(423,641)(13,201)
  2388. \thicklines
  2389. \put( 45,775){\circle{64}}
  2390. \put(240,530){\circle{72}}
  2391. \put(125,590){\circle{60}}
  2392. \put(265,670){\circle{58}}
  2393. \put(380,520){\circle{58}}
  2394. \put(375,635){\circle{50}}
  2395. \put( 25,770){\circle*{5}}
  2396. \put(145,590){\circle*{5}}
  2397. \put(265,650){\circle*{5}}
  2398. \put(265,530){\circle*{5}}
  2399. \put(380,650){\circle*{5}}
  2400. \put(380,530){\circle*{5}}
  2401. \multiput( 25,770)(21.71648,-32.57473){6}{\line( 2,-3){ 11.418}}
  2402. \put(145,590){\vector( 2,-3){0}}
  2403. \multiput( 25,770)(11.25000,-7.50000){33}{\makebox(0.6333,0.9500){\tenrm .}}
  2404. \multiput( 25,770)(12.85714,-4.28571){29}{\makebox(0.6333,0.9500){\tenrm .}}
  2405. \multiput( 25,770)(9.60000,-9.60000){26}{\makebox(0.6333,0.9500){\tenrm .}}
  2406. \multiput( 25,770)(12.00000,-6.00000){21}{\makebox(0.6333,0.9500){\tenrm .}}
  2407. \put(145,590){\vector( 4, 1){240}}
  2408. \put(145,590){\vector( 4,-1){240}}
  2409. \put(145,590){\vector( 2,-1){120}}
  2410. \put(145,590){\vector( 2, 1){120}}
  2411. \put(265,650){\vector( 1,-1){120}}
  2412. \put(265,530){\vector( 1, 0){115}}
  2413. \put(265,650){\vector( 1, 0){115}}
  2414. \put(255,660){\makebox(0,0)[lb]{\raisebox{0pt}[0pt][0pt]{$q_1$}}}
  2415. \put(245,515){\makebox(0,0)[lb]{\raisebox{0pt}[0pt][0pt]{$q_2$}}}
  2416. \put(370,630){\makebox(0,0)[lb]{\raisebox{0pt}[0pt][0pt]{$q_3$}}}
  2417. \put(375,512){\makebox(0,0)[lb]{\raisebox{0pt}[0pt][0pt]{$q_4$}}}
  2418. \put(210,715){\makebox(0,0)[lb]{\raisebox{0pt}[0pt][0pt]{$A_{\^t^3}$}}}
  2419. \put( 60,665){\makebox(0,0)[lb]{\raisebox{0pt}[0pt][0pt]{$A_{\^x}$}}}
  2420. \put(120,577){\makebox(0,0)[lb]{\raisebox{0pt}[0pt][0pt]{$A_{\^x}q$}}}
  2421. \put( 30,780){\makebox(0,0)[lb]{\raisebox{0pt}[0pt][0pt]{$q$}}}
  2422. \put( 65,585){\makebox(0,0)[lb]{\raisebox{0pt}[0pt][0pt]{$A_P$}}}
  2423. \put(205,660){\makebox(0,0)[lb]{\raisebox{0pt}[0pt][0pt]{$A_{P^1}$}}}
  2424. \put(175,520){\makebox(0,0)[lb]{\raisebox{0pt}[0pt][0pt]{$A_{P^2}$}}}
  2425. \put(410,640){\makebox(0,0)[lb]{\raisebox{0pt}[0pt][0pt]{$A_{P^3}$}}}
  2426. \put(415,520){\makebox(0,0)[lb]{\raisebox{0pt}[0pt][0pt]{$A_{P^4}$}}}
  2427. \multiput( 36,453.5)(21.71648,-32.57473){5}{\line( 2,-3){ 11.418}}
  2428. \multiput( 47.5,455)(11.25000,-7.50000){31}{\makebox(0.6333,0.9500){\tenrm .}}
  2429. \multiput( 50.71428,461.42857)(12.85714,-4.28571){27}{\makebox(0.6333,0.9500){\tenrm .}}
  2430. \multiput( 44.2,450.8)(9.60000,-9.60000){24}{\makebox(0.6333,0.9500){\tenrm .}}
  2431. \multiput( 49,458)(12.00000,-6.00000){19}{\makebox(0.6333,0.9500){\tenrm .}}
  2432. \put( 36,453.5){\vector(-2,3){0}}
  2433. \put( 47.5,455){\vector(-3,2){0}}
  2434. \put( 50.71428,461.42857){\vector(-3,1){0}}
  2435. \put( 44.2,450.8){\vector(-1,1){0}}
  2436. \put( 49,458){\vector(-2,1){0}}
  2437. \put(377,348){\vector(-4,-1){200}}
  2438. \put(377,232){\vector(-4, 1){195}}
  2439. \put(255,235){\vector(-2, 1){85}}
  2440. \put(255,345){\vector(-2,-1){90}}
  2441. \put(375,240){\vector(-1, 1){95}}
  2442. \put(377,230){\vector(-1, 0){77}}
  2443. \put(377,350){\vector(-1, 0){77}}
  2444. \put( 20,465){\makebox(0,0)[lb]{\raisebox{0pt}[0pt][0pt]{$Qq$}}}
  2445. \put(130,285){\makebox(0,0)[lb]{\raisebox{0pt}[0pt][0pt]{$PA_{\^x}q$}}}
  2446. \put(260,345){\makebox(0,0)[lb]{\raisebox{0pt}[0pt][0pt]{$P^1q_1$}}}
  2447. \put(260,225){\makebox(0,0)[lb]{\raisebox{0pt}[0pt][0pt]{$P^2q_2$}}}
  2448. \put(380,345){\makebox(0,0)[lb]{\raisebox{0pt}[0pt][0pt]{$P^3q_3$}}}
  2449. \put(380,225){\makebox(0,0)[lb]{\raisebox{0pt}[0pt][0pt]{$P^4q_4$}}}
  2450. \put(210,415){\makebox(0,0)[lb]{\raisebox{0pt}[0pt][0pt]{$\^t^3_q$}}}
  2451. \put(185,335){\makebox(0,0)[lb]{\raisebox{0pt}[0pt][0pt]{$\^p^1_{A_{\^x}q}$}}}
  2452. \put(190,240){\makebox(0,0)[lb]{\raisebox{0pt}[0pt][0pt]{$\^p^2_{A_{\^x}q}$}}}
  2453. \put( 70,365){\makebox(0,0)[lb]{\raisebox{0pt}[0pt][0pt]{$\^x_q$}}}
  2454. \end{picture}
  2455. This is a diagram we've already seen, namely the diagram under the single point cone $A_{\^x}q$ whose colimit is $(PA_{\^x}q; \pi^i_{A_{\^x}q}P^i{q_i}\to PA_{\^x}q)$.  
  2456. Now $Qq$ and the various $\^t^i_q$ provide us a co-cone over this diagram,
  2457. so there is a unique map $\^x_q:PA_{\^x}q\to Qq$ factoring this co-cone through the colimit.  
  2458. The provision of these $\^x_q$ for all alternatives $q\in A_q$ completes the definition of $\^x:Q\to P$ and it should be clear that $\^x$ is unique.
  2459. \end{proof}
  2460. \vbox
  2461. {Considering all possible diagrams $J$ collectively, we obtain
  2462. \begin{corollary}
  2463. $\%B$ cocomplete implies $\PROC{\%B}$ complete.
  2464. \end{corollary}}
  2465. Recall, however, that some of the schedule categories we use, $\%D\hPhys$ in particular, are not necessarily cocomplete.  
  2466. Fortunately, we can obtain a stronger result applicable to schedule categories that satisfy a weaker condition than cocompleteness.
  2467. In the above proof, consider the case of a particular diagram 
  2468. of schedules for which there exists no co-cone at all.
  2469. Suppose now that this very diagram arises in the course of a limit construction, say as the schedule diagram underlying some cone $p$ of $A_P$.
  2470. Then, for any process cone $(Q; \^t^i:Q\to P^i | i \in J)$, it will not be possible for any alternative $q$ of $A_Q$ to be mapped by the resulting $A_{\^x}$ into the cone $p$, i.~e., to have $A_{\^t^i}q=p_i$ for all $i \in J$.
  2471. If it were possible, then there would be a corresponding co-cone down in the schedule category $\^t^i_q:P^ip^i\to Qq$ even though none exists for that particular diagram.
  2472. Thus, if the troublesome alternative $p$ were to be left out of $A_P$, it would still be the case that all cones $Q$ over the process diagram would factor through $P$.
  2473. In the case of a category \%B which is {\em almost co-complete}, we need only revise our limit construction as follows.  
  2474. Construct the limit category $A'$ over the diagram of $(A_{P^i};A_{f^m})$ in $\_\Cat$.
  2475. Recall that the objects of $A'$ are single-point cones over $(A_{P^i};A_{f^m})$.
  2476. Take $A_P$ to be that subcategory of $A'$ consisting only of those single-point cones $p=(p^i\in A_{P^i})_{i\in J}$ for which the \%B-diagram $(P^ip^i;f^m_{p_i}:P^jp_j\to P^ip_i)$ has a co-cone and hence, by almost-cocompleteness, a colimit as well.
  2477. Given this choice of $A_P$, for all $p\in A_P$ we take $Pp$ to be the colimit schedule as before.
  2478. Note that in this case $A_P$ is not necessarily the limit of the $A_{P^i}$ in {\_\Cat} but rather a subcategory thereof, contrary to what we inferred from Lemma \ref{lem:aladj}.
  2479. This is not a contradiction; Lemma \ref{lem:aladj} requires \%B to have a terminal object, which is not the case for, e.~g., \%B=\%D\hPhys.
  2480. Indeed if \%B were to have a terminal object, then almost co-completeness would imply completeness since the terminal object provides {\em every} diagram with a cocone.
  2481. \vbox
  2482. {To summarize:
  2483. \begin{theorem}\label{thm:plima}
  2484. If $\%B$ is almost $J^{op}$-cocomplete, \PROC{\%B} is $J$-complete.
  2485. \end{theorem}}
  2486. Since {\%B} invariably has an initial object, \PROC{\%B} likewise has a terminal object $1$ having a single alternative $\bot$ mapping to the initial
  2487. behavior.  
  2488. Essentially, this is the {\sc Skip} (or {\sc Idle}) process having a single behavior in which
  2489. nothing happens. 
  2490. In the situation where \%B a is category of labeled schedules, 
  2491. if we wish to construct a limit of alphabetically coherent processes in \CPROC{\%B}, 
  2492. we can use the above construction 
  2493. provided the resulting limit process can be shown to be itself alphabetically coherent.
  2494. \begin{corollary}
  2495. If $\%B$ is almost $J^{op}$-cocomplete and $\sigma:\%B\to\Set$ preserves
  2496. $J$-colimits, \CPROC{\%B} is $J$-complete.
  2497. \end{corollary}
  2498. \begin{proofo}
  2499. Given a diagram of type $J$ in \PROC{\%B} 
  2500. all of whose objects and morphisms are coherent, 
  2501. the limit (together with all of the projections) will turn out to be
  2502. coherent since every diagram of behaviors of which we have to take a
  2503. colimit has the same underlying diagram of alphabets.  
  2504. The preservation of colimits by $\sigma$ means that the alphabet of the colimit and the various injections into it are the same in all cases.
  2505. \end{proofo}
  2506. It should be noted that, in the case of $\%B=\Pom$, $\cod:\Pom\to\Set$ does
  2507. not preserve certain coequalizers \cite{CCMP} and thus fails the conditions of this theorem.
  2508. One can indeed construct counterexamples in which a limit of pomset processes in $\PROC{\_\Pom}$ is not alphabetically coherent.  
  2509. These problems do not arise if we instead were to use $\_\Pom_{<}$, the category of pomsets with strict morphisms.
  2510. Though $\_\Pom_{<}$ is not cocomplete like \_\Pom, it is however {\em almost}-cocomplete.  
  2511. Furthermore, $\^s:\Pom_{<}\to\Set$ preserves colimits in those cases where they actually exist, 
  2512. thus making \CPROC{\_\Pom_{<}} complete.
  2513. \begin{corollary}
  2514. If $\%B$ is almost $J^{op}$-cocomplete,
  2515. \nobreak
  2516. \begin{enumerate}
  2517. \item\label{it:d}
  2518. $\PROCD{\%B}$ is $J$-complete.
  2519. \item\label{it:k}
  2520. $\PROCK{\%B}$ is $J$-complete.
  2521. \item\label{it:b}
  2522. $\PROCB{\%B}$ is $J$-complete.
  2523. \item\label{it:bc}
  2524. $\PROCBC{\%B}$ is $J$-complete.
  2525. \end{enumerate}
  2526. \end{corollary}
  2527. \begin{proof}
  2528. (\ref{it:d}) follows from the fact that a limit over a diagram of discrete categories is necessarily discrete, since the existence of a nontrivial morphism between single-point cones implies a nontrivial morphism somewhere in the diagram.
  2529. For (\ref{it:k}) this follows immediately from prefixes preserving colimits
  2530. (Theorem \ref{th:pos}).
  2531. For (\ref{it:b}), it suffices to demonstrate that the two conditions on branch\-ing-time processes hold for the limit process, provided they hold for all of the processes in the diagram.  
  2532. For this we use the notation from the proof of Theorem \ref{thm:plim}.
  2533. Since $s\to 0$ in {\%B} implies $s$ initial,
  2534. a noninitial object $Pp^i$ in a colimit diagram guarantees the colimit schedule $Pp$ to be noninitial via the injection $P^i\^p^i$.  
  2535. Thus there can be at most one initial alternative in the limit process $P$ by virtue of there being at most one initial alternative in each of the processes $P^i$.
  2536. To establish the condition that $P$ takes nontrivial alternative orderings to proper prefixes, we note that having the injection $\^p^i:P\to P^i$ be a prefix preserving morphism means that
  2537. \begin{diagram}
  2538. P^ip^i&\rTo{\^p^i_p}{}&Pp\\
  2539. \dIntoA{}{}&&\dIntoA{}{}\\
  2540. P^i{p'}^i&\rTo{\^p^i_{p'}}{}&Pp'\\
  2541. \end{diagram}
  2542. is a pullback and thus if $P^ip^i\hookrightarrow P^i{p'}^i$ is a proper prefix for some $i\in J$, then so must $Pp\hookrightarrow Pp'$.
  2543. For (\ref{it:bc}), it suffices to recall that colimits commute with each other (see Mac~Lane \cite{Mac}, ch.~9).
  2544. \end{proof}
  2545. \noindent
  2546. Similar results for the coherent process categories follow in much 
  2547. the same way.
  2548. It will also be of interest to know when lifted schedule functors preserve process limits 
  2549. so we should also mention
  2550. \begin{corollary}
  2551. Given any functor $F:\%B\to\%B'$ preserving colimits of type $J^{op}$,
  2552. $F_{\#}:\PROC{\%B}\to\PROC{\%B'}$ preserves limits of type $J$.
  2553. \end{corollary}
  2554. \noindent
  2555. This follows immediately from the construction of process limits.
  2556. The corresponding results for the special cases also hold.
  2557. \begin{corollary}
  2558. Given any functor $F:\%B\to\%B'$ preserving prefixes and colimits of 
  2559. type $J^{op}$, 
  2560. \begin{itemize}
  2561. \item
  2562. $F_{\#}:\PROCK{\%B}\to\PROCK{\%B'}$ preserves limits of type $J$.
  2563. \item
  2564. $F_{\#}:\PROCB{\%B}\to\PROCB{\%B'}$ preserves limits of type $J$.
  2565. \item
  2566. if $F$ preserves all filtered colimits,
  2567. $F_{\#}:\PROCBC{\%B}\to\PROCBC{\%B'}$ preserves limits of type $J$.
  2568. \end{itemize}
  2569. \end{corollary}
  2570. We now consider the question of colimits in the process categories.
  2571. In the case of coproducts, at least, the results are even simpler than 
  2572. for limits.
  2573. \begin{theorem}
  2574. For {\em any} category $\%B$, \PROC{\%B} has an initial object and all (small)
  2575. coproducts.
  2576. \end{theorem}
  2577. \begin{proof}
  2578. Given a $J$-indexed collection of processes $\{P^i\in\PROC{\%B}:i\in J\}$, 
  2579. by the cocompleteness of $\_\Cat$, we can construct $A_P=\coprod_{i\in J} A_{P^i}$ with injections $A_{\^i^i}:A_{P^i}\to A_P$.  
  2580. Since this is a coproduct in $\_\Cat$, there exists a unique $P:A_P\to \%B$ for which $PA_{\^i^i}=P^i$ which we take to be the coproduct process.
  2581. \begin{center}
  2582. \setlength{\unitlength}{0.0088in}
  2583. \begin{picture}(346,215)(-130,635)
  2584. \thicklines
  2585. \put(165,755){\circle{64}}
  2586. \put( 55,700){\circle{50}}
  2587. \put( 55,810){\circle{40}}
  2588. \multiput(165,725)(0.00000,-11.11111){5}{\line( 0,-1){  5.556}}
  2589. \put(165,675){\vector( 0,-1){0}}
  2590. \put( 75,690){\vector( 2,-1){ 60}}
  2591. \put( 65,795){\vector( 2,-3){ 80}}
  2592. \put( 75,710){\vector( 2, 1){ 60}}
  2593. \put( 75,800){\vector( 2,-1){ 60}}
  2594. \put( 60,755){\makebox(0,0)[lb]{\raisebox{0pt}[0pt][0pt]{$P^1$}}}
  2595. \put( 95,650){\makebox(0,0)[lb]{\raisebox{0pt}[0pt][0pt]{$P^2$}}}
  2596. \put( 95,800){\makebox(0,0)[lb]{\raisebox{0pt}[0pt][0pt]{$A_{\^i^1}$}}}
  2597. \put( 90,700){\makebox(0,0)[lb]{\raisebox{0pt}[0pt][0pt]{$A_{\^i^2}$}}}
  2598. \put(170,700){\makebox(0,0)[lb]{\raisebox{0pt}[0pt][0pt]{!=$P$}}}
  2599. \put(205,760){\makebox(0,0)[lb]{\raisebox{0pt}[0pt][0pt]{$A_P$}}}
  2600. \put( 0,785){\makebox(0,0)[lb]{\raisebox{0pt}[0pt][0pt]{$A_{P^1}$}}}
  2601. \put( 0,720){\makebox(0,0)[lb]{\raisebox{0pt}[0pt][0pt]{$A_{P^2}$}}}
  2602. \put(160,645){\makebox(0,0)[lb]{\raisebox{0pt}[0pt][0pt]{$\%B$}}}
  2603. \end{picture}
  2604. \end{center}
  2605. \noindent
  2606. We then construct the process injections $\^i^i:P^i\to P$ using the alternative maps $A_{\^i^i}$ together with the identity natural transformation $PA_{\^i^i}=P^i$.  
  2607. That $(P,\^i^i)_{i\in J}$ has the required universal property is straightforward.
  2608. \end{proof}
  2609. Since $A_P$ introduces no morphisms between alternatives in $A_{P^i}$ and $A_{P^j}$ for $i\ne j$, prefix closure of each of the $P^i$ implies prefix closure of $P$.
  2610. The morphisms $\^i^i$ are all prefix preserving in a trivial way.
  2611. In the case of branching time processes, we have to modify the construction in the case where more than one $A_{P^i}$ contains an initial element $\bot$; these become identified in $A_P$.
  2612. Since there is already a stipulation about the schedules that may be associated with $\bot$ by $P^i$ if $P^i\in\PROCB{\%B}$, i.~e., only the initial schedule, the functor $P$ will continue to be well-defined and serve as a colimit in \PROCB{\%B}.
  2613. For \PROCB{\%B} we need to observe that a filtered diagram of objects in $A_P$ must lie entirely within the image of one of the $A_{\^i^i}$.  Given this, the closure of $P$ follows from the closure of the $P^i$.
  2614. These observations suffice to show
  2615. \begin{corollary}
  2616. \PROCK{\%B}, \PROCB{\%B} and \PROCBC{\%B} have an initial object and 
  2617. all small coproducts.
  2618. \end{corollary}
  2619. Notice that in order for coproducts to exist, there are no requirements 
  2620. on $\%B$ aside from those we have already made for the sake of being able to
  2621. construct \PROCK{\%B}, \PROCB{\%B} and \PROCBC{\%B} at all.
  2622. The existence of coproducts relies, in some sense, strictly on the properties of \_\Cat.
  2623. The initial process $0$ is that for which the alternative set is empty.  
  2624. Essentially, this is the deadlocked {\sc Stop} (or {\sc Halt}) process that cannot do anything at all 
  2625. and thus is quite distinct from the {\sc Skip} process which is at least {\em able to do nothing},
  2626. i.~e., in the sense of being able to exhibit an idle behavior.
  2627. Coequalizers in the process categories, where they exist at all do
  2628. not, as far as we know, have any particularly pleasant characterization.  
  2629. It is fortunate that we have no particular use for them.
  2630. \section{Process Operations}
  2631. There is now sufficient machinery to describe some basic operations on 
  2632. processes analogous to those given for schedules.
  2633. We have essentially three tools for defining operations on processes.
  2634. \begin{itemize}
  2635. \item
  2636. Categorical limits and colimits, 
  2637. which we shall use to provide definitions for the concurrence and choice operations on processes.
  2638. \item
  2639. Pointwise lifting of schedule functors, 
  2640. which we have already seen for describing the lifting of alphabet renaming and restriction functors in the case of processes over labeled schedules.  
  2641. Pointwise lifting will also be used to describe process orthocurrence.
  2642. \item
  2643. Iteration, i.~e., fixpoint constructions.
  2644. \end{itemize}
  2645. \subsection{Choice}
  2646. The union or {\em choice} operation is the one operation that is entirely new with the introduction of processes.
  2647. Intuitively, the process $P+Q$ is that which may either behave like $P$ or like $Q$.
  2648. We see almost immediately that the coproduct in the process category essentially fills this role by taking the 
  2649. union of all of the alternative sets of the processes concerned without introducing any additional structure
  2650. within the component processes, except in the case of branch\-ing-time processes (\PROCB{\%B} or \PROCBC{\%B}), 
  2651. where we may need to merge initial alternatives.
  2652. Clearly the {\sc Stop} or $0$ process is an identity for the choice operation.
  2653. \subsection{Concurrence}
  2654. We recall for a moment our interpretation in which a process is a specification of event occurrences that may be satisfied by a given observation and a process morphism is a proof of implication between such specifications.  
  2655. Then, given a diagram of processes, an observation --- which itself can be viewed as a particularly tight specification --- that satisfies all of the specifications of the diagram in a consistent manner will essentially form a cone over that diagram.
  2656. Having a single specification or process to represent the entire diagram is just the notion of having a limit over that diagram.  
  2657. Alternatively, the limit could be viewed as a most general observation that captures everything that is known in the diagram.
  2658. We saw, in the context of schedules that we are actually taking colimits, 
  2659. since the schedule morphisms run opposite to the direction of the implications they represent.  
  2660. {\em Process} morphisms, however, run parallel to the corresponding implications, 
  2661. so the corresponding notion of system composition is given by a {\em limit} rather than by a colimit.
  2662. {\em Concurrence} is the special case of system composition in which we compose a number of entirely 
  2663. independent processes, 
  2664. i.~e., the diagram of processes being composed is discrete.
  2665. The concurrence of processes $P^1$,$P^2$,\dots will then be their product $P^1\times P^2\times\dots$,
  2666. this being analogous to the situation of schedule concurrence as a coproduct.
  2667. Applying the limit construction to a discrete diagram of two processes $P^1$ and $P^2$, we first see that the alternative set $A_{P^1\times P^2}$ is $A_{P^1}\times A_{P^2}$.  
  2668. This is intuitively sensible in that choosing an alternative of the combined process is merely a matter of independently choosing an alternative from each of the component processes.  
  2669. Given such a choice $p_1\in A_{P^1}$, $p_2\in A_{P^2}$, 
  2670. the corresponding schedule will be the schedule coproduct $P^1p_1\|P^2p_2$;
  2671. i.~e., once we have picked a pair of alternatives, we form the concurrence of the schedules in the previous manner, so that every event of each schedule appears and no temporal contraints are introduced between events on distinct schedules.
  2672. As noted before we will, as a matter of clarity, denote the schedule concurrence using the previous notation $\|$
  2673. rather than $+$ for coproduct, in order that it not be confused with the process choice ($+$) operation.
  2674. \subsection{Orthocurrence}
  2675. The process orthocurrence $P\otimes Q$ can be obtained via a pointwise lifting 
  2676. of schedule orthocurrences.  That is, we take each possible choice of an 
  2677. alternative of $P$ and an alternative of $Q$ and construct the corresponding
  2678. schedule orthocurrence.
  2679. However, this involves lifting a {\em binary} schedule operation and
  2680. we have only thus far discussed how one lifts schedule operations defined as {\em unary} functors.
  2681. If we can find some way to view schedule pairs as being schedules in their own right, 
  2682. then the desired construction follows automatically.
  2683. First of all, given a pair of schedule categories \%B and $\%B'$, 
  2684. we have a canonical injection functor $\<{-},{-}>:\PROC{\%B}\times\PROC{\%B'}\to\PROC{\%B\times\%B'}$
  2685. Given a pair of processes $P\in \PROC{\%B}$, $Q\in \PROC{\%B'}$, 
  2686. each of which we recall is actually a functor, we can pair these to obtain 
  2687. a functor, i.~e., a process $\<P,Q>:A_P\times A_Q\to\%B\times\%B'$ in $\PROC{\%B\times\%B'}$.
  2688. Process morphisms pair in a similar manner.
  2689. For pairings of prefix-closed processes we need to consider the
  2690. prefix classifiers $k$ and $k'$ for \%B and \%B', respectively.
  2691. In this case, we can use $\<k,k'>$ as a prefix classifier for $\%B\times\%B'$, 
  2692. i.~e., a pair of maps defined to be a prefix map in $\%B\times\%B'$ iff both components are prefixes.
  2693. Then the injection constructed above will take pairs of prefix-closed processes to prefix-closed processes and similarly for morphisms.  
  2694. Thus we also have a canonical injection $\<{-},{-}>:\PROCK{\%B}\times\%P_{k'}[\%B']\to\%P_{\<k,k'>}[\%B\times\%B']$.
  2695. If $P$ and $Q$ are branch\-ing-time processes, then $\<P,Q>$ necessarily has only one initial alternative, seeing as the initial schedule of $\%B\times\%B'$ is $\<0_{\%B},0_{\%B'}>$.  
  2696. Likewise a paired prefix will be proper iff at least one of its components is proper.  
  2697. These observations allow us to conclude that $\<P,Q>$ will be a branch\-ing-time process as well.
  2698. If $P$ and $Q$ are both closed branch\-ing-time processes, and \%B, $\%B'$ have all filtered colimits, then filtered colimits in $\%B\times\%B'$ will simply be pairs of colimits, $\<P,Q>$ is likewise a closed process, and again, a similar conclusion can be drawn for process morphisms.
  2699. Now we can recall the schedule orthocurrence functor $\otimes:\%B\times\%B\to\%B$, 
  2700. and note that it satisfies the necessary properties for it to lift to a process functor.
  2701. ${\otimes}_{\#}:\PROC{\%B\times\%B}\to\PROC{\%B}$ 
  2702. \begin{definition}
  2703. The {\em process orthocurrence} bifunctor $\otimes$ is the composition:
  2704. $$\commdiag{\PROC{\%B}\times\PROC{\%B}&\rTo{\<{-},{-}>}{}&\PROC{\%B\times\%B}&\rTo{{\otimes}_{\#}}{}\PROC{\%B}\cr}$$
  2705. \end{definition}.
  2706. It should be noted that the process orthocurrence bifunctor itself provides $\PROC{\%B}$ with a monoidal structure, 
  2707. one for which the corresponding identity is the process $I$ consisting of a single alternative whose schedule is $\:I$, the orthocurrence identity in \%B.
  2708. A more descriptive name for $I$ might be {\sc Bang} or {\sc Tick} 
  2709. since the single underlying schedule is effectively one which has a single indeterminate event.
  2710. \subsection{Concatenation}
  2711. For concatenation, recall the universal construction we used for schedules.
  2712. The basic definition for concatenation on processes is essentially the same, albeit with reversed arrows and some careful consideration as to what the concatenation specifier should be.
  2713. In the following, $I_{\bot}$ is a two-alternative process in which the alternatives are ordered.
  2714. The earlier one, $\bot$, has an initial schedule ($I_{\bot}(\bot)=\:0_{\%B}$) while the other alternative $\top$ points to the schedule $\:I_{\%B}$.
  2715. In \PROCB{\%B} and \PROCBC{\%B}, we have $I_{\bot}=I+0$, but in the more general process categories, $I_{\bot}$ needs to be constructed explicitly to insert the $\bot<\top$ ordering in $A_{I_{\bot}}$.
  2716. A morphism $e:P\to I_{\bot}$ can be seen as picking out an ``event'' of $P$.
  2717. In slightly more detail, each alternative $p$ of $A_P$ is taken by $A_e$ either to $\bot$ or to $\top$.  
  2718. In the latter case we then have to choose a schedule map $I\top(=\:I)\to Pp$, 
  2719. i.~e., an actual event of $Pp$.
  2720. Moreover these choices must be such that if we choose an event for a given alternative, we must choose the corresponding event from each later alternative.  
  2721. In the case of prefix-preserving maps, we must also choose the corresponding event from each earlier alternative as well.
  2722. In short, $e:P\to I_{\bot}$ picks out an event as it threads its way through the various alternatives of the process.
  2723. \begin{definition}
  2724. Given processes $P$, $Q$, and a map $d:2\to I_{\bot}\times I_{\bot}$ (a {\em concatenation specification}), a {\em pre-concatenation} $R=\<R,c_R,\^r_R>$ is
  2725. \begin{itemize}
  2726. \item
  2727. a process $R$, together with 
  2728. \item
  2729. a process map $c_R:R\to P\times Q$, and,
  2730. \item
  2731. for every pair of maps $(e:P\to I_{\bot},e':Q\to I_{\bot})$, a particular schedule map $\^r_R(e,e'):R\to 2$ such that the following diagram commutes:
  2732. $$\commdiag
  2733. {R&\rTo{\^r_R(e,e')}{}&2\cr
  2734. \dTo{c_R}{}&&\dTo{}{d}\cr
  2735. P\times Q&\rTo{e\times e'}{}&I_{\bot}\times I_{\bot}\cr
  2736. \end{itemize}
  2737. The {\em concatenation} $P\cat Q$, is a preconcatenation $\<P\cat Q,c,{-}\cat{-}>$ such that any preconcatenation $R$ factors through it, i.~e., there is a unique map $R\to P\cat Q$ making
  2738. \begin{equation}\label{diag:preconcat}
  2739. \begin{diagram}
  2740. &\SSE_{c_R} \SE^{\lower2pt\hbox{!}}\ESE^{\^r_R(e,e')} \\ 
  2741. && P\cat Q & \rTo_{e\cat e'} & 2 \\
  2742. && \dTo_c&&\dTo_d \\
  2743. && P\times Q & \rTo^{e\times e'} & I_{\bot}\times I_{\bot}\\
  2744. \end{diagram}
  2745. \end{equation}
  2746. commute.
  2747. \end{definition}
  2748. This definition has essentially the same content as in the schedule case: for each possible choice of an event from $P$ and an event from $Q$ we introduce an additional constraint as specified by $d$.
  2749. It is only that the notion of picking an event from a process is complicated by there possibly being more than one schedule containing the event in question.
  2750. As with schedule concatenation, having the concatenation factor through all of the preconcatenations ensures that the resulting structure is minimal in the sense of not introducing any unnecessary constraints or superfluous events.  
  2751. Again, as with schedule concatenation, we could express process concatenation in an equivalent manner as a single pullback
  2752. \begin{equation}\label{diag:concatpb}
  2753. \begin{diagram}
  2754. P\cat Q&\rTo&2^{Hom(P+Q,I_{\bot})}\\
  2755. \dTo^c&&\dTo_{d^{Hom(P+Q,I_{\bot})}}\\
  2756. P\times Q&\rTo&(I_{\bot}\times I_{\bot})^{Hom(P+Q,I_{\bot})}\\
  2757. \end{diagram}
  2758. \end{equation}
  2759. in which the bottom arrow is the product over all possible choices of pairs of maps $(e:P\to I_{\bot},e':Q\to I_{\bot})$.  
  2760. Though it is not clear this would be any more illuminating than the original definition, it does provide, via Theorem \ref{thm:plim} and its corollaries, an assurance that the concatenation as defined always exists assuming \%B to be almost cocomplete.
  2761. This construction however will only yield a recognizable notion of concatenation if we make a sensible choice for $d:2\to I_{\bot}\times I_{\bot}$, much as the definition for schedule concatenation rests on the choice of the schedule concatenation specifier $\:d:\:I\|\:I\to \:2$.  
  2762. Thus we should devote some attention to the question of 
  2763. which map $d$ we should actually use.
  2764. $I_{\bot}\times I_{\bot}$ is a process with four alternatives, which we may denote, for lack of better names, $\:\OO,\:\OI,\:\IO,\:\II$.  
  2765. Carrying through the product construction, the ordering on 
  2766. $A_{I_{\bot}\times I_{\bot}}$ is the usual product ordering and the corresponding schedule diagram is
  2767. \nopagebreak
  2768. \begin{center}\setlength{\unitlength}{0.0088in}
  2769. \begin{picture}(0,175)(140,680)
  2770. \thicklines
  2771. \put( 80,795){\oval(60,30)}
  2772. \put(200,795){\oval(60,30)}
  2773. \put( 80,730){\oval(60,30)}
  2774. \put(200,730){\oval(60,30)}
  2775. \put(110,730){\vector( 1, 0){ 60}}
  2776. \put( 80,780){\vector( 0,-1){ 35}}
  2777. \put(110,795){\vector( 1, 0){ 60}}
  2778. \put(200,780){\vector( 0,-1){ 35}}
  2779. \put( 80,735){\circle*{5}}
  2780. \put(190,735){\circle*{5}}
  2781. \put(210,795){\circle*{5}}
  2782. \put(210,725){\circle*{5}}
  2783. \thinlines
  2784. \put(210,795){\vector( 0,-1){ 65}}
  2785. \put( 80,735){\vector( 1, 0){105}}
  2786. \put(50,757){\makebox(0,0)[rb]{\raisebox{0pt}[0pt][0pt]{$I_{\bot}\times I_{\bot}$:}}}
  2787. \put(80,820){\makebox(0,0)[b]{\raisebox{0pt}[0pt][0pt]{$\:0_{\%B}\|\:0_{\%B}\cong \:0_{\%B}$}}}
  2788. \put(80,695){\makebox(0,0)[b]{\raisebox{0pt}[0pt][0pt]{$\:I_{\%B}\|\:0_{\%B}\cong \:I_{\%B}$}}}
  2789. \put(200,820){\makebox(0,0)[b]{\raisebox{0pt}[0pt][0pt]{$\:0\|\:I_{\%B}\cong \:I_{\%B}$}}}
  2790. \put(200,695){\makebox(0,0)[b]{\raisebox{0pt}[0pt][0pt]{$\:I_{\%B}\| \:I_{\%B}$}}}
  2791. \end{picture}
  2792. \end{center}
  2793. in which all of the maps are the canonical ones.  If $\%B=\%D\hPhys$, then the \:I schedules really are singleton event schedules and the underlying event maps will be as shown.
  2794. At first we shall take $2$ to be just like $I_{\bot}\times I_{\bot}$ except that in the alternative \:\II, in which ``both'' events are present we introduce an extra temporal constraint between them.  Otherwise the two processes are identical; in particular, we take $A_d$ to be the identity map.
  2795. As for ``introducing the extra temporal constraint'', this is done by taking the schedule $2(\:\II)$ to be the schedule concatenation $\:I_{\%B}\cat\:I_{\%B}$ rather than the concurrence as above.  The underlying schedules and schedule morphisms of $2$ are thus
  2796. \begin{equation}\label{eq:2scheds}
  2797. \setlength{\unitlength}{0.0088in}
  2798. \begin{picture}(0,175)(140,680)
  2799. \thicklines
  2800. \put( 80,795){\oval(60,30)}
  2801. \put(200,795){\oval(60,30)}
  2802. \put( 80,730){\oval(60,30)}
  2803. \put(200,730){\oval(60,30)}
  2804. \put(110,730){\vector( 1, 0){ 60}}
  2805. \put( 80,780){\vector( 0,-1){ 35}}
  2806. \put(110,795){\vector( 1, 0){ 60}}
  2807. \put(200,780){\vector( 0,-1){ 35}}
  2808. \put(190,735){\circle*{5}}
  2809. \put( 80,735){\circle*{5}}
  2810. \put(210,795){\circle*{5}}
  2811. \put(210,725){\circle*{5}}
  2812. \thinlines
  2813. \put(210,795){\vector( 0,-1){ 65}}
  2814. \put( 80,735){\vector( 1, 0){105}}
  2815. \multiput(190,735)(4,-2){6}{\makebox(0.6333,0.9500){\sevrm .}}
  2816. \put( 50,757){\makebox(0,0)[rb]{\raisebox{0pt}[0pt][0pt]{$2$:}}}
  2817. \put( 80,820){\makebox(0,0)[b]{\raisebox{0pt}[0pt][0pt]{$\:0_{\%B}\|\:0_{\%B}\cong \:0_{\%B}$}}}
  2818. \put( 80,695){\makebox(0,0)[b]{\raisebox{0pt}[0pt][0pt]{$\:I_{\%B}\|\:0_{\%B}\cong \:I_{\%B}$}}}
  2819. \put(200,820){\makebox(0,0)[b]{\raisebox{0pt}[0pt][0pt]{$\:0\|\:I_{\%B}\cong \:I_{\%B}$}}}
  2820. \put(200,695){\makebox(0,0)[b]{\raisebox{0pt}[0pt][0pt]{$\:I_{\%B}\cat \:I_{\%B}$}}}
  2821. \end{picture}
  2822. \end{equation}
  2823. In this diagram, the maps on the bottom and the right are those of the previous diagram composed with the canonical map $\:I_{\%B}\|\:I_{\%B}\to\:I_{\%B}\cat\:I_{\%B}$ for schedule concatenation.  
  2824. We also use the latter for $d_{\:\II}$, the one nontrivial portion of the natural transformation underlying the {\em process} morphism $d:2\to I_{\bot}\times I_{\bot}$.
  2825. \begin{proposition}\label{prop:concatstr}
  2826. $A_c:A_{P\times Q}\to A_{P\cat Q}$ is an isomorphism.
  2827. For any pair of alternatives $\<p,q>\in A_{P\cat Q}$, 
  2828. the corresponding schedule will be $Pp\cat Qq$.
  2829. Likewise the schedule portions of the maps $c:P\cat Q\to P\times Q$
  2830. and $e\cat e':P\cat Q\to 2$ are obtained from the canonical diagram 
  2831. for schedule concatenation
  2832. \begin{equation}\label{eq:pconcat}
  2833. \begin{diagram}
  2834. \:I\|\:I & \rTo^{e_p\|e'_q}& Pp\|Qq\\
  2835. \dTo^{\:d} && \dTo_{c_{\<p,q>}}\\
  2836. 2 & \rTo^{{e\cat e'}_{\<p,q>}} & Pp\cat Qq\\
  2837. \end{diagram}
  2838. \end{equation}
  2839. \end{proposition}
  2840. \begin{proofo}
  2841. That $A_c$ is an isomorphism follows immediately from consideration of the pullback construction of concatenation (\ref{diag:concatpb}). 
  2842. There, we notice that the two alternative sets on the right are isomorphic.  
  2843. Since the alternative sets themselves form a corresponding pullback by the construction of Theorem \ref{thm:plim}, the two alternative sets on the left must be isomorphic as well.
  2844. $P\cat Q$ is indeed a preconcatenation, 
  2845. since assembling all of the schedule maps $c_{\<p,q>}$ and ${e\cat e'}_{\<p,q>}$ 
  2846. extracted from the diagrams \ref{eq:pconcat} 
  2847. does produce actual process morphisms $c$ and $e\cat e'$.
  2848. It then remains to be shown that any other preconcatenation $R$ factors through it (as in \ref{diag:preconcat})
  2849. Having $A_c:A_{P\cat Q}\to A_{P\times Q}$ be an isomorphism makes determining
  2850. the map $A_R\to A_{P\cat Q}$ a trivial matter.  
  2851. We are left with the task of producing the underlying schedule maps $Pp\cat Qq\to Rr$ for each alternative $r$ of $R$ (where, in each case, $\<p,q>=A_{c_R}r$).
  2852. This is accomplished by showing that $Rr$ is a {\em schedule} preconcatenation and hence the desired schedule maps $Pp\cat Qq\to Rr$ exist and are unique by virtue of $Pp\cat Qq$ being a schedule concatenation.
  2853. Showing that $Rr$ is a {\em schedule} preconcatenation entails showing that for any pair of schedule maps $(\:e:\:I\to Pp,\:e':\:I\to Qq)$ we can find a map $\:e\cat\:e':\:2\to Rr$ making
  2854. $$\begin{diagram}
  2855. \:I\|\:I & \rTo^{\:e\|\:e'}& Pp\|Qq\\
  2856. \dTo^{\:d} && \dTo_{c_{\<p,q>}}\\
  2857. 2 & \rTo^{\:e\cat\:e'} & Pp\cat Qq\\
  2858. \end{diagram}$$
  2859. commute.
  2860. \begin{lemma}
  2861. Given a process $P$, some alternative $p$ thereof, and 
  2862. any schedule map $\:e:\:I\to Pp$, there exists a process map $e:P\to I_{\bot}$ such that $e_p=\:e$.
  2863. \end{lemma}
  2864. \begin{proofo}
  2865. Take $A_e(p')=\top$ if $p\le p'$, $\bot$ otherwise.
  2866. Likewise, take $e_{p'}=P(p\le p')\circ\:e$ if $p\le p'$ and the canonical initial map otherwise.
  2867. \end{proofo}
  2868. \noindent{\it Outline of Proof of Proposition \ref{prop:concatstr} (conclusion):\quad}
  2869. Given schedule maps $\:e$ and $\:e'$, we have corresponding process maps $e$ and $e'$ from which we can take advantage of $R$ being a process preconcatenation.  
  2870. This produces a process map $\^r(e,e'):R\to 2$ and then one has to check that 
  2871. the schedule map $\^r(e,e')_r:\:2\to Rr$ is exactly the map we want for $\:e\cat\:e'$.
  2872. \end{proofo}
  2873. This is the same notion of concatenation that appeared in the original pomset model, which in turn was inspired by that for trace theory.  That is, $P\cat Q$ is the set of all possibilities involving a schedule of $P$ concatenated with a schedule of $Q$.
  2874. One may now notice a problem in applying this to the case of prefix ordered processes:  
  2875. the map on the right side of diagram \ref{eq:2scheds}, i.~e., the one mapping $\:0\conc\:I_{\%B}\to\:I_{\%B}\cat\:I_{\%B}$, is {\em not} a prefix map.  
  2876. That there is a problem should not actually be surprising since it is with the prefix ordering structure that we make any kind of connection between the alternative ordering and the temporal constraints.  Consider that when we advance from an alternative $p$ to a later alternative $p'$, the new events of $Pp'$ will necessarily be after the ones that have already appeared in $Pp$.  But when forming the process concatenation $P\cat Q$, one would hope to capture the sense in which nothing happens in process $Q$ until after $P$ is ``finished.''  
  2877. In our context, given alternatives $p<p'$ in $A_P$ and $q<q'$ in $A_Q$, if we have an ordering $\<p,q>\le\<p,q'>$, then $\<p,q'>$ is a later stage of $A_{P\cat Q}$ at which we can arrive by ``doing something'' on $Q$.  
  2878. The fact that the $Q$ portion of the process $P\cat Q$ is now active suggests that we should not then be able to have $\<p,q'><\<p',q'>$, i.~e., to be able to do something on $P$.  In general, having $A_{P\cat Q}$ be isomorphic to $A_{P\times Q}$ turns out to be not so appropriate.
  2879. The immediate problem of $\:0\conc\:I_{\%B}\to\:I_{\%B}\cat\:I_{\%B}$ 
  2880. not being a prefix map is solved by using a different $2$, 
  2881. one in which the troublesome ordering $\:\OI\le\:\II$ is simply not present in $A_2$.  
  2882. This can easily be done since we only need to have $A_2$ mapping into $A_{I_{\bot}\times I_{\bot}}$; 
  2883. they do not need to be isomorphic.  
  2884. Then we can take the underlying schedule maps to be
  2885. \begin{equation}
  2886. \setlength{\unitlength}{0.0088in}
  2887. \begin{picture}(0,175)(140,680)
  2888. \thicklines
  2889. \put( 80,795){\oval(60,30)}
  2890. \put(200,795){\oval(60,30)}
  2891. \put( 80,730){\oval(60,30)}
  2892. \put(200,730){\oval(60,30)}
  2893. \put(110,730){\vector( 1, 0){ 60}}
  2894. \put( 80,780){\vector( 0,-1){ 35}}
  2895. \put(110,795){\vector( 1, 0){ 60}}
  2896. \put(190,735){\circle*{5}}
  2897. \put( 80,735){\circle*{5}}
  2898. \put(210,795){\circle*{5}}
  2899. \put(210,725){\circle*{5}}
  2900. \thinlines
  2901. \put( 80,735){\vector( 1, 0){105}}
  2902. \multiput(190,735)(4,-2){6}{\makebox(0.6333,0.9500){\sevrm .}}
  2903. \put( 50,757){\makebox(0,0)[rb]{\raisebox{0pt}[0pt][0pt]{$2$:}}}
  2904. \put( 80,820){\makebox(0,0)[b]{\raisebox{0pt}[0pt][0pt]{$\:0_{\%B}\|\:0_{\%B}\cong \:0_{\%B}$}}}
  2905. \put( 80,695){\makebox(0,0)[b]{\raisebox{0pt}[0pt][0pt]{$\:I_{\%B}\|\:0_{\%B}\cong \:I_{\%B}$}}}
  2906. \put(200,820){\makebox(0,0)[b]{\raisebox{0pt}[0pt][0pt]{$\:0\|\:I_{\%B}\cong \:I_{\%B}$}}}
  2907. \put(200,695){\makebox(0,0)[b]{\raisebox{0pt}[0pt][0pt]{$\:I_{\%B}\cat \:I_{\%B}$}}}
  2908. \end{picture}
  2909. \end{equation}
  2910. and carry through the previous concatenation construction as before.
  2911. Consider for example the concatenation of two processes $P$ and $Q$ each with a linear set of alternatives, the first alternative of each being initial (the empty schedule).
  2912. Using the original version of $2$ and ignoring the prefix ordering requirement, i.~e., working in \PROC{\%B}, the alternative set $A_{P\cat Q}$ of the concatenation is exactly like that of the concurrence $A_{P\times Q}$.
  2913. \begin{equation}
  2914. \setlength{\unitlength}{0.0088in}
  2915. \begin{picture}(140,95)(30,720)
  2916. \thicklines
  2917. \put(195,740){\makebox(0,0)[l]{$A_{P\cat Q}=A_P\times A_Q$}}
  2918. \put( 70,770){\vector( 0,-1){30}}
  2919. \put( 70,740){\vector( 0,-1){30}}
  2920. \put(100,770){\vector( 0,-1){30}}
  2921. \put(100,740){\vector( 0,-1){30}}
  2922. \put(130,770){\vector( 0,-1){30}}
  2923. \put(130,740){\vector( 0,-1){30}}
  2924. \put(160,770){\vector( 0,-1){30}}
  2925. \put(160,740){\vector( 0,-1){30}}
  2926. \put(190,770){\vector( 0,-1){30}}
  2927. \put(190,740){\vector( 0,-1){30}}
  2928. \put( 70,710){\vector( 1, 0){30}}
  2929. \put(100,710){\vector( 1, 0){30}}
  2930. \put(130,710){\vector( 1, 0){30}}
  2931. \put(160,710){\vector( 1, 0){30}}
  2932. \put( 70,740){\vector( 1, 0){30}}
  2933. \put(100,740){\vector( 1, 0){30}}
  2934. \put(130,740){\vector( 1, 0){30}}
  2935. \put(160,740){\vector( 1, 0){30}}
  2936. \put( 70,770){\vector( 1, 0){30}}
  2937. \put(100,770){\vector( 1, 0){30}}
  2938. \put(130,770){\vector( 1, 0){30}}
  2939. \put(160,770){\vector( 1, 0){30}}
  2940. \put( 25,740){\makebox(0,0)[r]{$A_P$}}
  2941. \put( 30,740){\vector( 0,-1){ 30}}
  2942. \put( 30,770){\vector( 0,-1){ 30}}
  2943. \put(130,820){\makebox(0,0)[b]{$A_Q$}}
  2944. \put(160,810){\vector( 1, 0){ 30}}
  2945. \put(130,810){\vector( 1, 0){ 30}}
  2946. \put(100,810){\vector( 1, 0){ 30}}
  2947. \put( 70,810){\vector( 1, 0){ 30}}
  2948. \put( 70,800){\makebox(0,0)[b]{$\bot_Q$}}
  2949. \end{picture}
  2950. \end{equation}
  2951. Using the revised $2$ and working in the prefix ordered category \PROCK{\%B},
  2952. an argument similar to that of Proposition \ref{prop:concatstr} shows that underlying sets of $A_{P\cat Q}$ and $A_{P\times Q}$ are the same, though we can no longer expect the ordering to be the same as well.  
  2953. The underlying object map of $A_{P\cat Q}$ and $A_{P\times Q}$ is thus fixed.  
  2954. That $P\cat Q$ is at least a preconcatenation requires that for every pair of maps $(e:P\to I_{\bot},e':Q\to I_{\bot})$, we have a map $P\cat Q\to 2$, the monotonicity of which dictates that certain orderings not be present in $A_{P\cat Q}$.
  2955. So for any particular $(e, e')$ pair we can deduce the maximal order that $A_{P\cat Q}$ can have to allow for a map into $A_2$
  2956. \begin{equation}
  2957. \setlength{\unitlength}{0.0088in}
  2958. \begin{picture}(140,100)(30,720)
  2959. \thicklines
  2960. \put(195,740){\makebox(0,0)[l]{$A_{P\cat Q}=A_P\times A_Q$}}
  2961. \put( 70,770){\vector( 0,-1){30}}
  2962. \put( 70,740){\vector( 0,-1){30}}
  2963. \put(100,770){\vector( 0,-1){30}}
  2964. \put(100,740){\vector( 0,-1){30}}
  2965. \put(130,740){\vector( 0,-1){30}}
  2966. \put(160,740){\vector( 0,-1){30}}
  2967. \put(190,740){\vector( 0,-1){30}}
  2968. \put( 70,710){\vector( 1, 0){30}}
  2969. \put(100,710){\vector( 1, 0){30}}
  2970. \put(130,710){\vector( 1, 0){30}}
  2971. \put(160,710){\vector( 1, 0){30}}
  2972. \put( 70,740){\vector( 1, 0){30}}
  2973. \put(100,740){\vector( 1, 0){30}}
  2974. \put(130,740){\vector( 1, 0){30}}
  2975. \put(160,740){\vector( 1, 0){30}}
  2976. \put( 70,770){\vector( 1, 0){30}}
  2977. \put(100,770){\vector( 1, 0){30}}
  2978. \put(130,770){\vector( 1, 0){30}}
  2979. \put(160,770){\vector( 1, 0){30}}
  2980. \put( 25,740){\makebox(0,0)[r]{$A_P$}}
  2981. \put( 30,770){\vector( 0,-1){ 30}}
  2982. \put( 30,740){\vector( 0,-1){ 30}}
  2983. \put( 30,740){\circle{10}}
  2984. \put( 30,710){\circle{10}}
  2985. \put(130,825){\makebox(0,0)[b]{$A_Q$}}
  2986. \put(160,810){\vector( 1, 0){ 30}}
  2987. \put(130,810){\vector( 1, 0){ 30}}
  2988. \put(100,810){\vector( 1, 0){ 30}}
  2989. \put( 70,810){\vector( 1, 0){ 30}}
  2990. \put( 70,800){\makebox(0,0)[br]{$\bot_Q$}}
  2991. \put(130,810){\circle{10}}
  2992. \put(160,810){\circle{10}}
  2993. \put(190,810){\circle{10}}
  2994. \end{picture}
  2995. \end{equation}
  2996. \noindent
  2997. in which we placed circles on those alternatives of $A_P$ and $A_Q$ that are sent by $A_e$ (resp. $A_{e'}$) to the noninitial alternative $\:I$ of $I_{\bot}$.
  2998. Note that if $A_ep=\:I$, then $A_ep'=\:I$ for all $p'\ge p$ by functoriality.
  2999. Combining all of the constraints on the $A_{P\cat Q}$ ordering imposed by all of the possible choices for $e$ and $e'$, we obtain the actual ordering for $A_{P\cat Q}$ 
  3000. \begin{equation}
  3001. \setlength{\unitlength}{0.0088in}
  3002. \begin{picture}(140,100)(30,720)
  3003. \thicklines
  3004. \put(195,740){\makebox(0,0)[l]{$A_{P\cat Q}$}}
  3005. \put( 70,770){\vector( 0,-1){30}}
  3006. \put( 70,740){\vector( 0,-1){30}}
  3007. \put( 70,710){\vector( 1, 0){30}}
  3008. \put(100,710){\vector( 1, 0){30}}
  3009. \put(130,710){\vector( 1, 0){30}}
  3010. \put(160,710){\vector( 1, 0){30}}
  3011. \put( 70,740){\vector( 1, 0){30}}
  3012. \put(100,740){\vector( 1, 0){30}}
  3013. \put(130,740){\vector( 1, 0){30}}
  3014. \put(160,740){\vector( 1, 0){30}}
  3015. \put( 70,770){\vector( 1, 0){30}}
  3016. \put(100,770){\vector( 1, 0){30}}
  3017. \put(130,770){\vector( 1, 0){30}}
  3018. \put(160,770){\vector( 1, 0){30}}
  3019. \put( 25,740){\makebox(0,0)[r]{$A_P$}}
  3020. \put( 30,740){\vector( 0,-1){ 30}}
  3021. \put( 30,770){\vector( 0,-1){ 30}}
  3022. \put( 30,775){\makebox(0,0)[b]{$\bot_P$}}
  3023. \put(130,820){\makebox(0,0)[b]{$A_Q$}}
  3024. \put(160,810){\vector( 1, 0){ 30}}
  3025. \put(130,810){\vector( 1, 0){ 30}}
  3026. \put(100,810){\vector( 1, 0){ 30}}
  3027. \put( 70,810){\vector( 1, 0){ 30}}
  3028. \put( 70,800){\makebox(0,0)[br]{$\bot_Q$}}
  3029. \end{picture}
  3030. \end{equation}
  3031. \noindent 
  3032. though we omit the proof that this alternative order together with the usual schedule concatenations constitutes the actual process $P\cat Q$ in \PROCK{\%B}.
  3033. Notice that this ordering of $A_{P\cat Q}$ manages to omit exactly those pairs of alternatives for which the corresponding schedule map is {\em not} a prefix.
  3034. In the branch\-ing-time process category \PROCB{\%B}, since we know that there exists a construction of concatenation as a limit, this limit will in fact be a branch\-ing-time process if its components are.
  3035. For the concatenation construction to be usable in the category of closed processes \PROCBC{\%B} it suffices that schedule concatenation, itself a colimit, commute with the taking of filtered colimits, but this follows from colimits commuting with colimits in general.
  3036. \section{Iterated operations}
  3037. Finally, we have to contend with the class of iterated operations.
  3038. One such is the Kleene star or iterated concatenation, $P^{*}$, in which the alternatives are sequences of alternatives from $P$ while the corresponding schedules are the corresponding schedule concatenations.  
  3039. Analogously, we also have the iterated concurrence $P^{\dagger}$ as introduced in \cite{Pr84}.  
  3040. These, among others, can be constructed by taking the fixpoint of a suitable process functor. 
  3041. In general, it will be useful to have criteria by which one may know that these fixpoints exist.
  3042. We start by stating a slight generalization of a result of Plotkin and 
  3043. Smythe \cite{PS78}
  3044. \begin{theorem}\label{th:fix}
  3045. Given two categories \%C, \%D, the latter having $\omega$-colimits and
  3046. an initial object 0, along with a functor $F:\%C\times\%D\to\%D$
  3047. preserving $\omega$-colimits,   
  3048. there exists an initial fixpoint $F^{\omega}:\%C\to\%D$.
  3049. That is, we have
  3050. \begin{itemize} 
  3051. \item a functor $F^{\omega}:\%C\to\%D$ and
  3052. \item a canonical natural isomorphism $\tau:F\<\id_{\%C},F^{\omega}>\nato F^{\omega}$
  3053. that is initial in the category of pre-fixpoints of $F$, a pre-fixpoint being
  3054. a pair $(G,\gamma)$ in which $G:\%C\to\%D$ is a functor and
  3055. $\gamma:F\<\id{\%C},G>\nato G$).  
  3056. \end{itemize}
  3057. Furthermore, if {\%C} has $\omega$-colimits, then $F^{\omega}$ preserves them
  3058. \end{theorem}
  3059. \begin{proofo}
  3060. We can fix an object $A$ of \%C, in which case the proof follows the
  3061. same line as in \cite{PS78}, that is, we take the colimit of
  3062. $$0\to F(A,0)\to F(A,F(A,0))\to F(A,F(A,F(A,0)))\to\cdots$$
  3063. to obtain $F^{\omega}A$ and a canonical isomorphism
  3064. $\tau:FF^{\omega}A\to F^{\omega}A$.  For any morphism, $f:A\to B$, we
  3065. have a natural transformation between the respective diagrams on $A$
  3066. and $B$ which produces a morphism $F^{\omega}f:F^{\omega}A\to F^{\omega}B$.
  3067. The final statement is a consequence of the uniqueness of colimits in
  3068. \end{proofo}
  3069. \vbox
  3070. {Actually, we will be using the dual result:
  3071. \addtocounter{theorem}{-1}
  3072. \begin{theorem}[dual]
  3073. Given two categories \%C, \%D, the latter having $\omega$-limits and
  3074. a terminal object $1$, along with a functor $F:\%C\times\%D\to\%D$
  3075. preserving $\omega$-limits, there exists a fixpoint functor
  3076. $F^{\omega}:\%C\to\%D$ with a canonical natural isomorphism 
  3077. $\tau:F^{\omega}\nato F\<\id_{\%C},F^{\omega}>$.
  3078. Furthermore, if {\%C} has $\omega$-limits, then $F^{\omega}$ preserves them
  3079. \end{theorem}}
  3080. We use this to define the iterated concurrence operation
  3081. ${}^\dagger:\PROC{\%B}\to\PROC{\%B}$ (see \cite{Pr86})
  3082. by taking the fixpoint of 
  3083. \begin{eqnarray*}
  3084. 1+(\pi_1\|\pi_2):\PROC{\%B}\times\PROC{\%B}&\to&\PROC{\%B}\cr
  3085. (P,Q)&\mapsto& 1+(P\|Q)\cr
  3086. \end{eqnarray*}
  3087. That this functor preserves $\omega$-limits is a matter of the
  3088. functors $1+{-}$ and ${-}\|{-}$ preserving $\omega$-limits.
  3089. By Theorem \ref{th:fix}, we then have a functor
  3090. \begin{eqnarray*}
  3091. {}^\dagger:\PROC{\%B}&\to&\PROC{\%B}\cr
  3092. P&\mapsto&P^\dagger\cr
  3093. \end{eqnarray*}
  3094. along with a canonical morphism $P\to 1+P\|P$ and the fact that
  3095. ${}^\dagger$ also preserves $\omega$-limits.
  3096. In a similar manner, for a particular process $P$ we can define the
  3097. iterated concatenation $P^*$ as the fixpoint of 
  3098. $$1+(P\cat\pi_2):\PROC{\%B}\to\PROC{\%B}$$
  3099. which also provides a canonical morphism $P^*\to 1+P\cat P^*$.
  3100. Since the $\cat$ functor only preserves filtered colimits in its second
  3101. argument, this is the best we can do.  This construction is
  3102. applicable in \PROCK{\%B}, \PROCB{\%B}, and \PROCBC{\%B} as well.
  3103. However, in \PROCBC{\%B}, unlike in the other cases we have the closure
  3104. property.  A closed process containing a particular ordered (a subcase of filtered) sequence of schedules must also contain the colimit schedule as an 
  3105. alternative.  We have all finite concatenations of schedules from $P$ as before, but now we also have all infinite concatenations of schedules from $P$ as
  3106. well.  
  3107. \chapter{Example: Dataflow Networks}\label{chapter:dflow}
  3108. We now present an example representing a fairly well-known model, the
  3109. dataflow model of Kahn \cite{Ka74}.  The particular result that we derive
  3110. has been obtained before, both by Rabinovich \cite{Rab} for pomset semantics
  3111. and by Gaifman and Pratt \cite{GP} for the dual-order prosset model.  
  3112. The difference here is that we use the limit semantics for system composition 
  3113. introduced above,
  3114. and the temporal model is sufficiently abstract to allow for the use of 
  3115. arbitrary {\%D\hPhys} temporal structures (e.g., intervals).
  3116. Informally, 
  3117. we consider a collection of {\em processors}, each of which has as its sole 
  3118. means of communication with the outside world a set of {\em ports}.
  3119. Essentially the processor reacts to data items appearing on any of 
  3120. its input ports, possibly transmitting data items on one or more 
  3121. of its output ports.
  3122. A dataflow network consists of a set of processors together with a set of 
  3123. transmission {\em channels} linking them.  One may distinguish between
  3124. channels that are purely {\em input} channels, i.e., that connect only 
  3125. input ports and those channels which are driven by an output port on some 
  3126. processor.  
  3127. Data items that are broadcast on a given channel are then seen on the input
  3128. ports to which that channel connects.  
  3129. Channels are sequential in the sense that only one data item may be broadcast 
  3130. at a time.
  3131. Taken collectively the network itself may be viewed as a processor in
  3132. the previous sense.  The set of input ports of the processor is the
  3133. set of input channels of the network while the output ports are some
  3134. designated set of channels driven by particular processors, the
  3135. remaining channels becoming {\em internal} channels which are not seen
  3136. by the outside world.
  3137. \section{Kahn's Semantics}
  3138. Kahn's result concerns a network of processors that ``compute functions.''
  3139. This is formalized as follows.  The channels carry data items drawn from some alphabet $\Sigma$, which may be different for different channels.
  3140. We describe what happens on a particular channel during some computation
  3141. via its history, which will be a (possibly infinite) string on the alphabet $\Sigma$, i.~e., some element of $\Sigma^\leomega$, 
  3142. a cpo which we take to be ordered by prefix.
  3143. The behavior of processor $i$ is described by a monotone continuous 
  3144. (i.~e., directed-join preserving) {\em function} relating the output string to the given input strings.  
  3145. For example, we could have a network of 3 processors
  3146. \begin{equation}
  3147. \setlength{\unitlength}{0.0088in}
  3148. \begin{picture}(613,171)(55,630)
  3149. \thinlines
  3150. \put( 80,775){\vector( 1, 0){ 85}}
  3151. \put(585,765){\vector( 1, 0){ 65}}
  3152. \put(425,715){\line( 1, 0){ 50}}
  3153. \put(475,715){\line( 0,-1){ 75}}
  3154. \put(475,640){\line(-1, 0){365}}
  3155. \put(110,640){\line( 0, 1){115}}
  3156. \put(110,755){\vector( 1, 0){ 55}}
  3157. \put(390,705){\vector( 3, 1){135}}
  3158. \put(250,765){\vector( 3,-2){ 90}}
  3159. \put(225,765){\vector( 1, 0){300}}
  3160. \thicklines
  3161. \put(165,745){\framebox(60,40){}}
  3162. \put(340,680){\framebox(50,40){}}
  3163. \put(525,735){\framebox(60,45){}}
  3164. \put( 55,770){\makebox(0,0)[lb]{\raisebox{0pt}[0pt][0pt]{$X$}}}
  3165. \put(425,695){\makebox(0,0)[lb]{\raisebox{0pt}[0pt][0pt]{$Y$}}}
  3166. \put(285,775){\makebox(0,0)[lb]{\raisebox{0pt}[0pt][0pt]{$Z$}}}
  3167. \put(660,760){\makebox(0,0)[lb]{\raisebox{0pt}[0pt][0pt]{$W$}}}
  3168. \put(185,760){\makebox(0,0)[lb]{\raisebox{0pt}[0pt][0pt]{$F_1$}}}
  3169. \put(355,695){\makebox(0,0)[lb]{\raisebox{0pt}[0pt][0pt]{$F_2$}}}
  3170. \put(545,752){\makebox(0,0)[lb]{\raisebox{0pt}[0pt][0pt]{$F_3$}}}
  3171. \end{picture}
  3172. \end{equation}
  3173. \noindent
  3174. whose behaviors are described by the functions
  3175. \begin{eqnarray*}
  3176. F_1:\Sigma_X^\leomega\times\Sigma_Y^\leomega&\to&\Sigma_Z^\leomega \\
  3177. F_2:\Sigma_Z^\leomega&\to&\Sigma_Y^\leomega \\
  3178. F_3:\Sigma_Y^\leomega\times\Sigma_Z^\leomega&\to&\Sigma_W^\leomega 
  3179. \end{eqnarray*}
  3180. Kahn's main result is that, by taking the least fixpoint of the system
  3181. \begin{eqnarray*}
  3182. Z&=&F_1(X,Y) \\ Y&=&F_2(Z) \\ W&=&F_3(Y,Z)
  3183. \end{eqnarray*}
  3184. we get a function $\overline{F}:\Sigma_X^\leomega\to\Sigma_W^\leomega$
  3185. which describes the behavior of the network as a whole with respect to
  3186. the input $X$ and the output $W$.
  3187. \section{Extending the Kahn Model}
  3188. That the relation between the input histories and the output histories
  3189. be a functional one for each of the processors is critical to the
  3190. applicability of Kahn's theorem.  Brock and Ackerman \cite{BA77}
  3191. discuss anomalies that occur when one considers networks with one or
  3192. more processors having internal nondeterminism in their behavior.
  3193. One of the motivations of the original pomset model was to provide 
  3194. an extension of Kahn's model to treat situations with nondeterminism.
  3195. One of the usual questions with such extensions is whether they are 
  3196. {\em conservative} in the sense of obtaining matching results in those 
  3197. situations in which the Kahn model is applicable.  Rabinovich \cite{Rab} 
  3198. and Gaifman and Pratt \cite{GP} answered this in the affirmative, given 
  3199. a particular representation of dataflow processors in terms of pomset 
  3200. processes and a particular notion of composition of processes.
  3201. Our goal here is to emulate the Gaifman-Pratt result, which in our terms,
  3202. applies to processes constructed over the schedule category \_3\hPhys, 
  3203. except that we will use our notion of composition of process specifications 
  3204. via categorical limit, rather than the {\em fusion} described in \cite{GP},
  3205. and the result will apply to $\_D\hPhys$ for arbitrary choice of temporal 
  3206. domain \_D.
  3207. In our framework, we view each processor as a component and, moreover,
  3208. we view each channel as a component as well.  Thus, the above network
  3209. becomes a diagram
  3210. \begin{equation}\label{pict:pnet}
  3211. \setlength{\unitlength}{0.0088in}
  3212. \begin{picture}(356,176)(100,585)
  3213. \thinlines
  3214. \put(450,730){\vector( 0,-1){105}}
  3215. \put(110,725){\vector( 0,-1){110}}
  3216. \put(430,725){\vector(-2,-1){210}}
  3217. \put(120,730){\vector( 2,-1){210}}
  3218. \put(445,730){\vector(-3,-4){ 75}}
  3219. \put(280,725){\vector( 2,-3){ 60}}
  3220. \put(280,725){\vector(-3,-4){ 75}}
  3221. \put(115,730){\vector( 2,-3){ 70}}
  3222. \put(100,740){\makebox(0,0)[lb]{\raisebox{0pt}[0pt][0pt]{$P_1$}}}
  3223. \put(265,740){\makebox(0,0)[lb]{\raisebox{0pt}[0pt][0pt]{$P_2$}}}
  3224. \put(435,740){\makebox(0,0)[lb]{\raisebox{0pt}[0pt][0pt]{$P_3$}}}
  3225. \put(100,595){\makebox(0,0)[lb]{\raisebox{0pt}[0pt][0pt]{$\^S_X^\leomega$}}}
  3226. \put(195,600){\makebox(0,0)[lb]{\raisebox{0pt}[0pt][0pt]{$\^S_Y^\leomega$}}}
  3227. \put(340,605){\makebox(0,0)[lb]{\raisebox{0pt}[0pt][0pt]{$\^S_Z^\leomega$}}}
  3228. \put(440,600){\makebox(0,0)[lb]{\raisebox{0pt}[0pt][0pt]{$\^S_W^\leomega$}}}
  3229. \end{picture}
  3230. \end{equation}
  3231. \noindent
  3232. where each of the $P_i$'s is a process that ``computes the function
  3233. $F_i$'' in the sense to be described below.  Our contention is that
  3234. our notion of system composition via taking the limit of this diagram
  3235. matches the least fixpoint semantics of Kahn, that is, taking the
  3236. limit of this diagram yields a process $P$ with morphisms 
  3237. $P\to\Sigma_X^\leomega$ and $P\to\Sigma_W^\leomega$ such that $P$
  3238. computes the function $\overline{F}$.
  3239. \subsection{Input Locations}
  3240. For the purposes of this chapter we will be working within the
  3241. category of closed branching-time coherent processes (\CPROCBC{\%B}).
  3242. In addition we need to be able to have temporal constraints forcing
  3243. events to strictly precede other events, and to prohibit morphisms
  3244. from identifying such events that are in strict precedence.  
  3245. Thus we need to have our underlying temporal domain be some $\%D\hPhys$.
  3246. Recall that we say an event $x$ {\em strictly precedes} another event
  3247. $y$ (write $x<y$) if there exists no morphism $\delta(x,y)\to I$.
  3248. We first characterize the \cite{GP} notion of {\em input location} in
  3249. our framework.  Intuitively, a given component $Q$ of $P$, i.e., where
  3250. we have a morphism $f:P\to Q$, is an {\em input} if every alternative
  3251. of $Q$ has some alternative of $P$ making use of it.
  3252. \begin{definition}
  3253. A coherent process morphism $f:P\to Q$ is an {\em input} if 
  3254. \begin{itemize}
  3255. \item
  3256. $A_Q$ has an initial element $\bot_Q$, $A_f^{-1}(\bot_Q)$ is nonempty
  3257. (i.e., there exist alternatives of $A_P$ mapped by $A_f$ to $\bot_Q$).
  3258. \item
  3259. Given $p\in A_P$, let $q=A_f(p)$.  
  3260. If $q'\in A_Q$ is such that $q\le q'$, there exists
  3261. an extension $p'\in A_P$ (i.e., $p\le p'$) such that $A_f(p')=q'$.
  3262. Any such extension satisfies the following:
  3263. \begin{enumerate}
  3264. \item\label{inp:strict}
  3265. every event in $P(p')$ not already in $P(p)$ or $f_{p'}Q(q')$ is strictly
  3266. preceded by some event in $f_{p'}Q(q')$ not already in $f_pQ(q)$
  3267. (i.e., every new event of $p'$ is strictly preceded by one of the new
  3268. events of $q'$),
  3269. \item\label{inp:early}
  3270. if $Q(q)$ is empty (initial), $\delta(x,f_{p'}y)=0$ for all 
  3271. $x\in P(p)$, $y\in Q(q')$ (i.e., the first input events can appear
  3272. arbitrarily early with respect to the events of $p$).
  3273. \end{enumerate}
  3274. \item
  3275. $f$ is a restriction, i.e., $f=t^{\#}$ for some injective 
  3276. $t:\sigma Q\to\sigma P$.
  3277. \end{itemize}
  3278. \end{definition}
  3279. The essential idea is that the process $P$ has a behavior to follow even
  3280. if no input is received and any behavior involving a certain amount of
  3281. input can be extended if we receive more input.  The last clause
  3282. ensures that $P$ does not introduce stronger temporal constraints on
  3283. the input events, other than those given by $Q$.
  3284. \subsection{Computing a function}
  3285. If we are to discuss how processes can compute functions, we first
  3286. need to say how we are representing the values of these functions.
  3287. \begin{definition}
  3288. A process $Q$ in \CPROCBC{\%B} {\em represents} a cpo {\_D} if $A_Q$ is
  3289. isomorphic to {\_D}.
  3290. \end{definition}
  3291. Essentially, $Q$ is a process describing one or more channels.
  3292. Elements of {\_D} are then histories of these channels.
  3293. The conditions on branching-time processes guarantee that when we
  3294. advance from one alternative of {\_D} to the next, new events will
  3295. appear.
  3296. Since we are dealing with labeled schedules, $I$ has a terminal alphabet
  3297. $\{\bullet\}$.  For any alphabet \^G and any action $a\in\^G$, the translation $a:\{\bullet\}\to\^G$ lifts to a process translation which can then be applied to $I$ to get the single-event process $a^{\#}I\in\PROC{\%B_{\^G}}$.  In fact the alphabet $\^G$ itself can be constructed as a process
  3298. $$\coprod_{a\in\^G}a^{\#}I$$
  3299. obtained by taking the coproduct in \PROC{\%B_{\^G}}.
  3300. It should then be clear that
  3301. \begin{proposition}
  3302. The process $\Gamma^{\leomega}$ represents the cpo $\Gamma^{\leomega}$.
  3303. \end{proposition}
  3304. \begin{proposition}
  3305. If $P,Q\in\CPROCBC{\%B}$ represent $\_D_P$ and $\_D_Q$ respectively,
  3306. $P\times Q$ represents $\_D_P\times\_D_Q$.
  3307. \end{proposition}
  3308. For the purposes of constructing diagrams representing Kahn networks,
  3309. we require that a given cpo $\_D$ always be represented in the same
  3310. way wherever it occurs, that is, all of the processes representing
  3311. $\_D$ in a particular diagram are canonically isomorphic.  
  3312. For this it suffices to take
  3313. $\_D$ to always be a product of $\Sigma^\leomega$'s.
  3314. \begin{definition}
  3315. A process $P\in\CPROCBC{\%B_{\Sigma}}$ {\em computes a function} 
  3316. $F:\_D_1\times\ldots\times\_D_n\to\_D_0$
  3317. if there exist coherent morphisms $f_i:P\to Q_i$ $(i=0\ldots n)$,
  3318. where $Q_i$ represents $\_D_i$,
  3319. $A_{f_0\times\ldots\times f_n}(A_P)=\{(a_i)_i\in\_D_0\times\ldots\times\_D_n|a_0=F(a_1,\ldots,a_n)\}$,
  3320. and $f_1\times\ldots\times f_n$ is an input.
  3321. \end{definition}
  3322. In other words, a process computes a function if
  3323. we can identify components of this process 
  3324. corresponding to the ``input and output channels,'' such that 
  3325. \begin{itemize}
  3326. \item
  3327. every alternative behavior of the process corresponds to some allowed
  3328. combination of input/output values, and 
  3329. \item
  3330. all such allowed
  3331. combinations have at least one behavior associated with them.
  3332. \end{itemize}
  3333. It should be noted that, while $A_f$ is required to be strict for all
  3334. process morphisms $f$ in \CPROCBC, this says nothing about the
  3335. strictness of the function $F$ computed by a given process $P$ as
  3336. above.
  3337. \footnote{Nor does this even require that $F$ be a function, 
  3338. but achieving that level of generality is well beyond the scope of this work.}
  3339. \subsection{Validity}
  3340. Given the above definitions, we now discover that we have a valid extension
  3341. of Kahn's semantics for data-flow networks, i.~e., given a network of 
  3342. processors that compute functions, any corresponding diagram of 
  3343. processes (in the sense of the previous chapters) 
  3344. that compute the same functions
  3345. will have a limit which will be a process that computes the least fixpoint.
  3346. One may construct any desired network through repeated operations of 
  3347. (1) juxtaposing processors and (2) connecting an output on a processor to 
  3348. one of its inputs.  
  3349. We treat the latter operation, 
  3350. demonstrating that for the case of a single process
  3351. where we connect a single output channel to one of its inputs, the possible 
  3352. behaviors we obtain are just those obtained in Kahn's model.
  3353. \def\Gleo{\Gamma^{\leomega}}
  3354. \def\Fbar{\overline{F}}
  3355. \begin{theorem}\label{thm:kahn}
  3356. If the process $P\in\CPROCBC{\%B_{\Sigma}}$ computes a monotone, continuous
  3357. function $F:\Gleo\times\_D'\to\Gleo$, for which
  3358. we have a process $X$ representing $\_D'$, and morphisms
  3359. $f:P\to\Gleo$, $g:P\to X$, $h:P\to\Gleo$, where $f\times g$ is an input,
  3360. then the equalizer of $f$ and $h$, $\tau:R\to P$, is such that $R$
  3361. computes $\Fbar:\_D'\to\Gleo$, the least fixpoint of $F$.
  3362. \end{theorem}
  3363. \begin{diagram}
  3364.  &        & &&X\\
  3365.  &        & &\NE^g&\\
  3366. R&\rTo^{\^t}&P&\pile{\rTo^f\\ \rTo_h} &\Gleo\\
  3367. \end{diagram}
  3368. Note that the equalizer $\tau$ is necessarily also a limit over the
  3369. entire diagram of $P$,$X$, and $\Gleo$.
  3370. \begin{proofo}
  3371. We need to show that $A_{(h\times g)\tau}(A_R)$ is the graph of
  3372. $\Fbar$, and that $g\tau$ is an input.
  3373. By the construction of process limits in
  3374. Theorems~\ref{thm:plim} and~\ref{thm:plima}, 
  3375. $A_R$ is a subset of the equalizer of $A_f$ and $A_h$ in {\Set},
  3376. giving
  3377. $$A_{(h\times f\times g)\tau}(A_R)\subseteq\{(a,a,b)\in(\Gleo)^2\times\_D'
  3378. |a=F(a,b)\}$$
  3379. The set inclusion can be proper since not all of the underlying
  3380. behavior coequalizers need exist.
  3381. Now suppose we have $b\in\_D'$ and $a<a'\in\Gleo$ such
  3382. that $a=F(a,b)$ and $a'=F(a',b)$.
  3383. We can consider any alternative $p$ of $P$ such that 
  3384. $A_{f\times g}(p)=(a,b)$ and any extension $p'$ for which 
  3385. $A_{f\times g}(p)=(a',b)$.  
  3386. Since F is functional we must have $A_h(p)=a$ and $A_h(p')=a'$.
  3387. If $h_p$ and $f_p$ have a coequalizer then $h_{p'}$ and $f_{p'}$
  3388. cannot, for we can consider the earliest event $x$ in $\Gleo(a')$ not
  3389. in $\Gleo(a)$, guaranteed to exist by the branching-time conditions
  3390. ($\Gleo(a)$ is a proper prefix).  Then neither of $h_{p'}x$ and
  3391. $f_{p'}x$ can be in $P(p)$; they both lie in the extension.  They must
  3392. be distinct because their labelings are distinct.
  3393. Condition~\ref{inp:strict} of $f$ being an input implies that 
  3394. $f_{p'}x$ strictly precedes $h_{p'}x$, thus they cannot be identified
  3395. as would be required in a coequalizer.  
  3396. In short, if an alternative of $R$ corresponding to $(a,b)$ exists, we
  3397. cannot have an alternative corresponding to $(a',b)$.
  3398. We are then reduced to showing that $A_{(h\times g)\tau}(A_R)$
  3399. contains $(\Fbar(b),b)$ for all $b\in\_D'$ and this is a matter of
  3400. showing that given any $b$ and $a=\Fbar(b)$, there exists some 
  3401. $p\in A_P$ with $A_gp=b$, $A_fp=A_hp=a$, such that the co-equalizer of
  3402. $f_p,h_p:\Gleo(a)\to P(p)$ exists in ($\%D\hPhys\comma\Set$)
  3403. Fix $b\in\_D'$.  We will inductively construct a sequence of
  3404. alternatives of $P$ whose sup is the desired $p$.
  3405. Let $a_0=\bot\in\Gleo$ and
  3406. let $p_0\in A_P$ be such that $A_f\times A_g=(\bot,b)$.
  3407. Given $p_n$ such that $(A_f\times A_g)p_n=(a_n,b)$ and $a_n$ has length $n$,
  3408. if $F(a_n,b)=a_n$, we just let $p_m=p_n$ for all $m>n$.
  3409. Otherwise, $a_n$ is a prefix of $F(a_n,b)$ and we append the
  3410. $(n+1)^{\rm th}$ symbol of $F(a_n,b)$ to $a_n$ to obtain $a_{n+1}$.
  3411. $p_{n+1}$ is then the extension of $p_n$ for which
  3412. $(A_f\times A_g)p_{n+1}=(a_{n+1},b)$ obtained via $f\times g$ being an
  3413. input morphism.  
  3414. Note that the usual sequence one uses to construct $\Fbar$ via induction 
  3415. (i.e., $F(\bot,b)$, $F(F(\bot,b),b)$, $F(F(F(\bot,b)))$, etc.) 
  3416. is a subsequence of the $a_n$'s.  
  3417. Thus, $\bigvee a_n=\Fbar(b)=a$.
  3418. We then let $p=\bigvee p_n$ in $A_P$ and by the continuity of $f$ and
  3419. $h$, $A_fp=A_hp=a$.
  3420. It now remains to show that the desired coequalizer exists.
  3421. Let $r\to p$ be the coequalizer in ($\%D\hCat\comma\Set$); recall that
  3422. this latter category is cocomplete.  If $r$ is actually in the
  3423. subcategory ($\%D\hPhys\comma\Set$), i.e., if its events satisfy the
  3424. criterion $\delta(x,x)=I$, then we are done.
  3425. Since the prefix of a coequalizer is itself a coequalizer, it suffices
  3426. to inductively verify this criterion for all of the prefixes $r_n$ of
  3427. $r$, where $r_n\to p_n$ is the coequalizer of
  3428. $f_{p_n},h_{p_m}i_{nm}:\Gleo(a_n)\to P(p_n)$ (where $m$ is such that
  3429. $F(a_n,b)=a_m$; $i_{nm}$ is the prefix injection).  That is, one
  3430. verifies for all events $x$ of $r_n$ not already in $r_{n-1}$,
  3431. that $\delta_r(x,x)=I$.  
  3432. Due to the way one constructs colimits in $\%D\hCat$ for {\%D} a preorder, 
  3433. this is not the case only if there is
  3434. closed path in $p_n$ of the form $y=y_0,y_1,\ldots,y_{2k+1}=y$ where
  3435. $y_{2j-1}=\:f_{{\eighttt p}_n}z_j$ and $\:h_{{\eighttt p}_m}z_j=y_{2j}$
  3436. ($z_j$ all in $\Gleo(a_n)$) such that 
  3437. $$\delta(y_0,y_1)\otimes\delta(y_2,y_3)\otimes\ldots\otimes\delta(y_{2k},y_{2k+1})> I$$
  3438. One then shows, for any event $y$ in $p_n$ not already in $p_{n-1}$,
  3439. that such a loop does not exist, on the assumption that there are no
  3440. such loops in $p_{n-1}$.  
  3441. The possibilities for loops in $p_n$ are as follows.  
  3442. The case $n=0$ is trivial since $a_0$ has no events.
  3443. For $n=1$, use condition~\ref{inp:early} in the definition of input morphism.
  3444. For $n>1$, use condition~\ref{inp:strict}, that successive events
  3445. $z,z'$ of $\Gleo(a_n)$ have $\delta(z,z')=I$ and that $f$ is a
  3446. restriction (so that 
  3447. $\delta(\:f_{{\eighttt p}_n}z,\:f_{{\eighttt p}_n}z')=I$ as well).
  3448. Having shown that $R$ has alternatives for each of the elements of the
  3449. graph of $\Fbar$, it only remains to show that $g\tau:R\to X$ is an
  3450. input morphism.  This can be left as an exercise as the arguments 
  3451. involved are not too dissimilar from what has gone before.
  3452. \end{proofo}
  3453. To go from this to a general result is a matter of considering that
  3454. for any given system of functional equations, the least fixpoint we obtain
  3455. is the same, whether we compute it in stages progressively identifying one pair of variables at a time or identifying them all at once.
  3456. Likewise, in any diagram of processes like (\ref{pict:pnet}), we obtain the same result whether we compute the limit all at once or substitute equalizers \nobreak piecemeal.
  3457. \chapter{Directions for Future Work}\label{chapter:conc}
  3458. \subsubsection{Conjunctive Normal Form and Event Structures}
  3459. It has already been noted that our process specifications are essentially presented in ``disjunctive normal form''.
  3460. Can one devise any corresponding ``conjunctive normal form''?
  3461. This would be a model where the temporal relationships 
  3462. (rather than the choices) now form the outer structure, 
  3463. the disjunctive aspects being handled by some substructures where the 
  3464. events used to be.  
  3465. We consider a somewhat looser sense of CNF, taking a particular transformation one may perform on any prefix-ordered process $P$ to obtain a form of annotated schedule.
  3466. The first observation is that the constituent behaviors, 
  3467. together with the morphisms relating them, form a diagram of type $A_P$.
  3468. In the case of a prefix ordered process, 
  3469. prefix ordering guarantees that this diagram has a colimit.
  3470. Now as a matter of terminology, for each event $e$ of the colimit and each of the alternatives $a$ in $A_P$,
  3471. we say that $e$ is {\em present} in $a$ iff the image of the schedule $P(a)$ under the injection into the colimit schedule $E_P$ contains $e$.
  3472. The subset of all alternatives of $A_P$ in which $e$ is present we denote $\^f_P(e)$.  Since the process is prefix ordered, an event present in $a$ will also be present in all ``later'' alteratives $a'$, i.~e., all alternatives $a'$ for which $a\le a'$; thus $\^f_P(e)$ is necessarily a {\em filter} (upward-closed subset) of $A_P$.
  3473. Essentially, we obtain a schedule $E_P$ together with an annotation $\^f_P:E_P\to\%F(E)$ of the schedule that indicates which subsets of events may collectively occur in any given scenario.
  3474. In the case of a partial order temporal structure, this looks very much like one of Winskel's {\em prime event structures} \cite{Win86}.  
  3475. \begin{definition}
  3476. A prime event structure is a partially ordered set $(E,{\le})$ together with a 
  3477. {\em consistency} predicate $\^z$ on finite subsets of $E$ satisfying
  3478. \begin{eqnarray}
  3479. &&\{e'|e'\le e\}\hbox{ is finite}\label{es:finite}\\
  3480. &&\{e\}\in\^z\\
  3481. Y\subseteq X\land X\in\^z&\Longrightarrow&Y\in\^z\\
  3482. X\in\^z\land\exists e'\in X:e\le e'&\Longrightarrow&X\cup\{e\}\in\^z
  3483. \end{eqnarray}
  3484. for all $e,e'\in E$ and all finite subsets $X,Y$ of $E$.
  3485. \end{definition}
  3486. If one is willing to ignore the property (\ref{es:finite}),
  3487. one may crudely derive an ``event structure'' from a prefix-closed process $P$ in $\PROCK{\_\Pos_{<}}$ by constructing the event set $E_P$ via a colimit as described above and then defining $\^z_P$ via
  3488. \begin{equation}
  3489. X\in\^z_P\iff\bigcap_{e\in X}\^f(e)\ne\emptyset
  3490. \end{equation}
  3491. that is, a finite subset $X\subseteq E$ of events is {\em consistent} iff there exists some alternative $a$ in which they are all present.  
  3492. This reduction, however, loses information since, without any further conditions on the structure of $A_P$, there is, in general, no way to rederive the individual schedules $P(a)$ comprising the colimit schedule $E_P$.
  3493. Also from Winskel:
  3494. \begin{definition}
  3495. Given a prime event structure $(E,{\le},\^z)$, a subset 
  3496. of $E$ is {\em consistent} iff all of its finite subsets are in $\^z$.
  3497. A subset $D$ is {\em left-closed} iff $e'\le e\land e\in D\implies e'\in D$ for all $e,e'$ in $E$.
  3498. \end{definition}
  3499. The set of all left-closed, consistent subsets of $E$ we denote $\_L(E)$, which can in turn be ordered by inclusion.
  3500. Clearly, $\_L(E)$ will include all of the original schedules\footnote{Actually, their images under the colimit injection into $E$} comprising $P$, but it will also include all {\em prefixes} of those schedules as well.  There may also be some orderings in $\_L(E)$ that were not present in the original $A_P$.
  3501. One way out is to consider more restrictions on the structure of the
  3502. process $P$, i.~e., to somehow stipulate that for every alternative
  3503. $a$ of $A_P$, and every possible distinct prefix $\:p'$ of the
  3504. schedule $P(a)$, there exists a unique alternative $a'\le a$ such that
  3505. $P(a')=\:p'$.  This is effectively what Rabinovich and Trakhtenbrot
  3506. do in their work on {\em configuration structures} \cite{RT}. 
  3507. To formalize this in our framework, we first take note of a correspondence 
  3508. Winskel derives between prime event structures and {\em finitary prime algebraic domains}.  First we need a rapid review of some domain theory terminology:
  3509. \begin{definition}
  3510. Given a partial order $(D,\sqsubseteq)$, 
  3511. \begin{itemize}
  3512. \item
  3513. A subset $D'\subseteq D$ is {\em finitely compatible} iff each of its finite subsets $X$ has a least upper bound $\bigsqcup X$ in $D$.  
  3514. \item
  3515. $D$ is {\em consistently complete} iff all of its finitely compatible subsets have least upper bounds.
  3516. \item
  3517. An element $f\in D$ is {\em finite} iff for all directed subsets $S$ of $D$,
  3518. $f\sqsubseteq\bigsqcup S\implies f\sqsubseteq s$ for some $s\in S$.
  3519. \item
  3520. $D$ is {\em algebraic} iff for every element $d\in D$, we have 
  3521. $d=\bigsqcup\{f\sqsubseteq d|f\hbox{ is finite}\}$.
  3522. \item
  3523. For any element $d\in D$, the {\em left closure}, $\lfloor d\rfloor$, is the set $\{e|e\sqsubseteq d\}$.
  3524. \item
  3525. $D$ is {\em finitary} iff $\lfloor f\rfloor$ is finite for all finite $f$
  3526. \item
  3527. An element $p$ is a {\em complete prime} of $D$ iff for any subset $D'$ with a least upper bound, $p\sqsubseteq\bigsqcup D'\implies \exists d\in D':p\sqsubseteq d$.
  3528. \item
  3529. $D$ is {\em prime algebraic} iff for every element $d\in D$, we have\hfil\break
  3530. $d=\bigsqcup\{p\sqsubseteq d|p\hbox{ is a complete prime}\}$.
  3531. \end{itemize}
  3532. \end{definition}
  3533. Now, for any finitary prime algebraic domain $(D,\sqsubseteq)$, 
  3534. we can take the set of its primes $\_\Pr(D)$ ordered by $\sqsubseteq$,
  3535. and define a consistency predicate $\^z_{\_\Pr(D)}$ that contains all sets of primes having a least upper bound, at which point Winskel then proves (see \cite{Win86})
  3536. \begin{theorem}
  3537. \begin{itemize}
  3538. \item
  3539. For any finitary prime algebraic domain $(D,\sqsubseteq)$, we have that $(\_\Pr(D),\sqsubseteq,\^z_{\_\Pr(D)})$ is a prime event structure, and $(\_L\/\_\Pr(D),\subseteq)$ and $(D,\sqsubseteq)$ are isomorphic as partial orders.
  3540. \item
  3541. For any prime event structure $(E,{\le},\^z)$, $(\_L(E),\subseteq)$ is a finitary prime algebraic domain whose complete primes are the subsets $\lfloor e \rfloor$ for all $e\in E$ (and so $\_\Pr\/\_L(E)$ and $E$ are likewise isomorphic).
  3542. \end{itemize}
  3543. \end{theorem}
  3544. The essential point is that we can stipulate a class of processes $\%P_{pc}[\_2\hCat]$ which we call {\em prefix-closed} in which we require 
  3545. the alternative set $A_P$ to be a finitary prime algebraic domain, and for all alternatives $a\in A_P$ either
  3546. \begin{itemize}
  3547. \item
  3548. $a$ is a complete prime and $P(a)$ contains exactly one event $e$ that is not in the image of any other $P(a')$ and is maximal in $P(a)$.
  3549. \item
  3550. $a$ is not a complete prime and all events in $P(a)$ are present in previous alternatives.
  3551. \end{itemize}
  3552. This class of processes, a subclass of branching-time processes is so severely restricted that building the colimit of the schedules, tossing away the 
  3553. alternative set and remembering only the consistency predicate loses no information; one can reconstruct the original process.  
  3554. Unfortunately, the restrictions are so severe that we cannot take advantage of any flexibility in choice of temporal domain \%D; all of the schedules perforce look like partial order schedules.
  3555. Clearly, the more annotation we keep on our events when converting a process to an annotated schedule, the fewer requirements that need to be placed on the structure of the process in order that this conversion be bijective.  
  3556. The question of what annotation suffices, e.g., for branching-time or closed branching-time processes is an open one.  Presumably this would yield
  3557. some form of ``live'' event structure that would be able to express the notion
  3558. of more than one event being forced to occur at a given stage, thus facilitating the discussion of liveness properties.
  3559. One area for possible improvement includes finding less restrictive notions
  3560. of prefix.  The current prefix notion for {\_R\hPhys} stipulates that if
  3561. there is any upper bound at all from event $x$ to event $y$ and $x$ is
  3562. part of a prefix, so is $y$.  This actually makes sense from the point
  3563. of view that if alternatives are merely ordered, one can say nothing
  3564. about the timing of decisions.  If $y$ is to be not in the prefix but
  3565. part of the next stage, then $y$ must be allowed to occur an
  3566. arbitrarily long time after $x$ since the decision to advance to the
  3567. next stage may be indefinitely postponed.  This suggests instead
  3568. exploring some form of further enrichment for the alternative set, one
  3569. which would not only provide orderings between alternatives, but also
  3570. give time limits on the decisions between them.
  3571. \appendix
  3572. \bibliographystyle{plain}
  3573. \begin{thebibliography}{10}
  3574. \bibitem{BCSW}
  3575. R.~Betti, A.~Carboni, R.~Street, and R.~Walters.
  3576. \newblock Variation through enrichment.
  3577. \newblock {\em J. Pure and Applied Algebra}, 29:109--127, 1983.
  3578. \bibitem{BA77}
  3579. J.D. Brock and W.B. Ackerman.
  3580. \newblock An anomaly in the specifications of nondeterministic packet systems.
  3581. \newblock Technical Report Computation Structures Group Note CSG-33, MIT Lab.
  3582.   for Computer Science, November 1977.
  3583. \bibitem{Cas91}
  3584. Ross Casley.
  3585. \newblock {\em On the Specification of Concurrent Systems}.
  3586. \newblock PhD thesis, Stanford University, January 1991.
  3587. \bibitem{CCMP}
  3588. R.T Casley, R.F. Crew, J.~Meseguer, and V.R. Pratt.
  3589. \newblock Temporal structures.
  3590. \newblock In {\em Proc. Conf. on Category Theory and Computer Science, LNCS
  3591.   389}, Manchester, September 1989. Springer-Verlag.
  3592. \newblock Revised version to appear in Math. Structures in Comp. Sci., {\bf
  3593.   1}:2, 1991.
  3594. \bibitem{Flo62}
  3595. R.W. Floyd.
  3596. \newblock Algorithm 97: shortest path.
  3597. \newblock {\em Communications of the ACM}, 5(6):345, 1962.
  3598. \bibitem{GP}
  3599. H.~Gaifman and V.R. Pratt.
  3600. \newblock Partial order models of concurrency and the computation of functions.
  3601. \newblock In {\em Proc. 2nd Annual IEEE Symp. on Logic in Computer Science},
  3602.   pages 72--85, Ithaca, NY, June 1987.
  3603. \bibitem{Gra}
  3604. J.~Grabowski.
  3605. \newblock On partial languages.
  3606. \newblock {\em Fundamenta Informaticae}, IV.2:427--498, 1981.
  3607. \bibitem{Gre}
  3608. I.~Greif.
  3609. \newblock {\em Semantics of Communicating Parallel Processes}.
  3610. \newblock PhD thesis, Project MAC report TR-154, MIT, 1975.
  3611. \bibitem{Joh82}
  3612. P.T. Johnstone.
  3613. \newblock {\em Stone Spaces}.
  3614. \newblock Cambridge University Press, 1982.
  3615. \bibitem{J83}
  3616. P.T. Johnstone.
  3617. \newblock Fibred categories.
  3618. \newblock Lecture notes, University of Cambridge, 1983.
  3619. \bibitem{Ka74}
  3620. G.~Kahn.
  3621. \newblock The semantics of a simple language for parallel programming.
  3622. \newblock In {\em Proc. IFIP Congress 74}. North-Holland, Amsterdam, 1974.
  3623. \bibitem{Kel}
  3624. G.M. Kelly.
  3625. \newblock {\em Basic Concepts of Enriched Category Theory: London Math. Soc.
  3626.   Lecture Notes}.
  3627. \newblock 64. Cambridge University Press, 1982.
  3628. \bibitem{Mac}
  3629. S.~Mac{ }Lane.
  3630. \newblock {\em Categories for the Working Mathematician}.
  3631. \newblock Springer-Verlag, 1971.
  3632. \bibitem{MS}
  3633. U.~Montanari and C.~Simonelli.
  3634. \newblock On distinguishing between concurrency and nondeterminism.
  3635. \newblock In {\em Proc. {Ecole} de {Printemps} on Concurrency and {Petri}
  3636.   Nets}, Colleville, 1980.
  3637. \bibitem{NPW}
  3638. M.~Nielsen, G.~Plotkin, and G.~Winskel.
  3639. \newblock Petri nets, event structures, and domains, part {I}.
  3640. \newblock {\em Theoretical Computer Science}, 13, 1981.
  3641. \bibitem{PW}
  3642. S.S. Pinter and P.~Wolper.
  3643. \newblock A temporal logic to reason about partially ordered computations.
  3644. \newblock In {\em Proc. 3rd ACM Symp. on Principles of Distributed Computing},
  3645.   pages 28--37, Vancouver, August 1984.
  3646. \bibitem{PS78}
  3647. G.D. Plotkin and M.B. Smyth.
  3648. \newblock The category-theoretic solution of recursive domain equations.
  3649. \newblock Technical Report Research Report No. 60, D.A.I., 1978.
  3650. \bibitem{Pr82}
  3651. V.R. Pratt.
  3652. \newblock On the composition of processes.
  3653. \newblock In {\em Proceedings of the Ninth Annual ACM Symposium on Principles
  3654.   of Programming Languages}, January 1982.
  3655. \bibitem{Pr84}
  3656. V.R. Pratt.
  3657. \newblock The pomset model of parallel processes: {Unifying} the temporal and
  3658.   the spatial.
  3659. \newblock In {\em Proc. CMU/SERC Workshop on Analysis of Concurrency, LNCS
  3660.   197}, pages 180--196, Pittsburgh, 1984. Springer-Verlag.
  3661. \bibitem{Pr86}
  3662. V.R. Pratt.
  3663. \newblock Modeling concurrency with partial orders.
  3664. \newblock {\em Int. J. of Parallel Programming}, 15(1):33--71, February 1986.
  3665. \bibitem{Pr89a}
  3666. V.R. Pratt.
  3667. \newblock Enriched categories and the {Floyd-Warshall} connection.
  3668. \newblock In {\em Proc. First International Conference on Algebraic Methodology
  3669.   and Software Technology}, pages 177--180, Iowa City, May 1989.
  3670. \bibitem{Rab}
  3671. A.~Rabinovich.
  3672. \newblock Pomset semantics is consistent with dataflow semantics.
  3673. \newblock Technical report, Tel-Aviv University, 1986.
  3674. \bibitem{RT}
  3675. A.~Rabinovich and B.A. Trakhtenbrot.
  3676. \newblock Behavior structures and nets.
  3677. \newblock {\em Fundamenta Informatica}, 11(4):357--404, 1988.
  3678. \bibitem{War62}
  3679. S.~Warshall.
  3680. \newblock A theorem on {B}oolean matrices.
  3681. \newblock {\em Journal of the ACM}, 9(1):11--12, 1962.
  3682. \bibitem{Win86}
  3683. G.~Winskel.
  3684. \newblock Event structures: Lecture notes for the advanced course on {Petri}
  3685.   nets.
  3686. \newblock Technical report, University of Cambridge, July 1986.
  3687. \bibitem{Win88}
  3688. G.~Winskel.
  3689. \newblock A category of labelled {Petri} nets and compositional proof system.
  3690. \newblock In {\em Proc. 3rd Annual Symposium on Logic in Computer Science},
  3691.   Edinburgh, 1988. Computer Society Press.
  3692. \end{thebibliography}
  3693. \end{document}
  3694.